Запускается только из среды
От: CyberNut Россия  
Дата: 05.01.07 22:08
Оценка:
Учусь работать с ДиректХ и тут столкнулся с такой бедой:
Программа компилируется без ошибок и запускается из 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;
}


В общем подскажите в чем может быть дело
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.