Salut a tout les L33T COD3R de la cafzone !
Voila j’explique mon probleme : j’arrive pas à initialiser ma fenetre Direct3D … oui ça parait tout con, mais ça plante …
extrait du code :
//////////////////// CLASSE MOTEUR3D //////////////////////
CMoteur3D::CMoteur3D()
{
}
CMoteur3D::~CMoteur3D()
{
}
HRESULT CMoteur3D::Init(HWND hWnd,bool bFullscreen, long nWidth, long nHeight)
{
if (NULL == ( m_pD3D = Direct3DCreate8(D3D_SDK_VERSION ))) return E_FAIL;
HRESULT result;
result = m_pD3D->GetAdapterIdentifier(D3DADAPTER_DEFAULT,0,&d3did);
OutputDebugString("DirectX a trouve le periferique : ");
OutputDebugString(d3did.Description);
OutputDebugString("
");
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed = !bFullscreen;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
d3dpp.EnableAutoDepthStencil = TRUE;
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
if( FAILED( m_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_HARDWARE_VERTEXPROCESSING,
&d3dpp, &m_pD3DDev ) ) )
{
if( FAILED( m_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &m_pD3DDev ) ) )
{
return E_FAIL;
}
}
// c'est ici que l'on defini les etats du service
//m_pD3DDev->SetRenderState(D3DRS_CULLMODE , D3DCULL_NONE );
m_pD3DDev->SetRenderState(D3DRS_ZENABLE ,TRUE);
maScene = new CScene(m_pD3DDev);
return S_OK;
}
////////////////////////// FONCTION PRINCIPALE ///////////////
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
//enregistre la classe Windows
WNDCLASSEX wc = {
sizeof(WNDCLASSEX),
CS_CLASSDC,
MsgProc,
0L,
0L,
GetModuleHandle(NULL),
NULL,
LoadCursor(NULL,IDC_CROSS),
NULL,
NULL,
WND_CLASS_NAME,
NULL};
RegisterClassEx(&wc);
//Cree la fenetre
HWND hWnd = CreateWindow(WND_CLASS_NAME,WND_NAME,WS_OVERLAPPEDWINDOW,100,100,
WINDOW_WIDTH,WINDOW_HEIGHT,GetDesktopWindow(),NULL,wc.hInstance,NULL);
if (hWnd == NULL) return -1;
//on affiche la fenetre
ShowWindow(hWnd,SW_SHOWDEFAULT);
UpdateWindow(hWnd);
HRESULT result;
monMoteur = new CMoteur3D;
result = monMoteur->Init(hWnd,false,WINDOW_WIDTH,WINDOW_HEIGHT);
if (result == E_FAIL){ MessageBox(NULL,"erreur initialisation moteur 3d","ERREUR",1);PostQuitMessage(0);}
…
Bon, comme vous pouvez le voir, la fonction WinMain intencie ma classe Moteur3D et appele la fonction init() qui me revoie une erreur :casstet:
Pourtant j’utilise les meme parametres qu’un tutorial qui fonctione !