1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
void Init_D3D(bool FullScreen, int Width, int Height)
{
//création du device D3D
if (Objet_D3D==NULL) Objet_D3D = Direct3DCreate8(D3D_SDK_VERSION);
//initialisation de l'objet D3DPRESENT_PARAMETERS
ZeroMemory(&d3dpp,sizeof(d3dpp));
//selon le mode désiré, on lance la fonction adéquate
if (FullScreen) Init_FullScreen(Width, Height);
else Init_Windowed(Width, Height);
//paramètres d'affichage pour l'utilisation de la clé de couleur et de la transparence
D3D_Device->SetRenderState(D3DRS_ALPHATESTENABLE, true);
D3D_Device->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_NOTEQUAL);
D3D_Device->SetRenderState(D3DRS_ALPHAREF, 0x00);
D3D_Device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
D3D_Device->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
D3D_Device->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);
D3D_Device->SetTextureStageState(0,D3DTSS_ALPHAOP,D3DTOP_MODULATE);
D3D_Device->SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_TEXTURE);
D3D_Device->SetTextureStageState(0,D3DTSS_ALPHAARG2,D3DTA_DIFFUSE);
//filtrage bilinéaire pour un effet d'antialiasing lors des distorsions des sprites
D3D_Device->SetTextureStageState(0,D3DTSS_MAGFILTER,D3DTEXF_LINEAR);
D3D_Device->SetTextureStageState(0,D3DTSS_MINFILTER,D3DTEXF_LINEAR);
//désactivation de la lumière (sinon les sprites seront noirs)
D3D_Device->SetRenderState(D3DRS_LIGHTING, FALSE);
//on obtient un pointeur sur la surface du BackBuffer
D3D_Device->GetBackBuffer(0,D3DBACKBUFFER_TYPE_MONO,&lpBackBuffer_Surface); |
Partager