Учусь работать с ДиректХ и тут столкнулся с такой бедой:
Программа компилируется без ошибок и запускается из Visual Studio 2005 без всяких проблем и все работает,
а если запускаю сам .exe файл, то моргнет окно и исчезает
Ошибка думаю вот в месте вызова функции InitialMesh(), если эту функцию убрать/закомментрировать, то запускается с экзешника.
В функции вроде ничего лишнего нету, но не пойму почему ж тогда не запускается с экзешника ((
............
if(SUCCEEDED(InitDirectX(g_hInstance,g_hWnd)))
{
if(SUCCEEDED(InitialMesh(pDirect3DDevice)))
{
ShowWindow(hWnd,SW_SHOWDEFAULT);
UpdateWindow(hWnd);
ZeroMemory(&msg,sizeof(msg));
while(msg.message != WM_QUIT)
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
if(pInput)
{
Mouse(pDirect3DDevice,pMouseDevice);
Key(pDirect3DDevice,pKeyboardDevice);
}
Rendering(pDirect3DDevice);
}
}
}
CleanupDirectX();
.......
Текст Функции InitialMesh
HRESULT InitialMesh(LPDIRECT3DDEVICE9 pDirect3DDevice)
{
if(FAILED(D3DXLoadMeshFromX("Car.x",D3DXMESH_SYSTEMMEM,pDirect3DDevice, NULL,&pMeshBuffer,NULL,&dwNumber,&pMesh)))
return E_FAIL;
D3DXMATERIAL* D3DXMeshMaterials = NULL;
D3DXMeshMaterials = (D3DXMATERIAL*)pMeshBuffer->GetBufferPointer();
pMeshMaterial = new D3DMATERIAL9[dwNumber];
pMeshTexture = new LPDIRECT3DTEXTURE9[dwNumber];
for( DWORD i = 0;i<dwNumber; i++)
{
pMeshMaterial[i] = D3DXMeshMaterials[i].MatD3D;
pMeshMaterial[i].Ambient = pMeshMaterial[i].Diffuse;
if(FAILED(D3DXCreateTextureFromFile(pDirect3DDevice,D3DXMeshMaterials[i].pTextureFilename,&pMeshTexture[i])))
pMeshTexture[i] = NULL;
}
pMeshBuffer->Release();
return S_OK;
}
В общем подскажите в чем может быть дело