У меня возникли проблемы с созданием функции Load Mesh в C++ для Direct X. Кажется, я получаю эту ошибку: «Необработанное исключение в 0x00401e64 в _.exe: 0xC00000005: Ошибка чтения нарушения прав доступа 0x83e05597 ". Я знаю, что это происходит сбой на этой линии:Загрузка Mesh из X-файла с Direct X 9 в C++
D3DXMATERIAL* tempMaterials = (D3DXMATERIAL*)bufMaterial->GetBufferPointer();
Вся функция выглядит следующим образом (я следовал вдоль directxtutorial.com до сих пор для прямой X помощи).
void LoadModel(Model* model, LPCTSTR File){
LPD3DXBUFFER bufMaterial;
D3DXLoadMeshFromX(File, D3DXMESH_SYSTEMMEM, d3ddev, NULL, &bufMaterial, NULL,
&model->numMaterials, &model->Mesh);
OutputDebugString("LOAD MESH \n");
D3DXMATERIAL* tempMaterials = (D3DXMATERIAL*)bufMaterial->GetBufferPointer();
OutputDebugString("GET BUFFER\n");
model->Material = new D3DMATERIAL9[model->numMaterials];
model->Texture = new LPDIRECT3DTEXTURE9[model->numMaterials];
OutputDebugString("LOAD MESH \n");
for(DWORD index = 0; index < model->numMaterials; index++)
{
model->Material[index] = tempMaterials[index].MatD3D;
model->Material[index].Ambient = model->Material[index].Diffuse;
// if there is a texture to load, load it
if(FAILED(D3DXCreateTextureFromFileA(d3ddev,
tempMaterials[index].pTextureFilename,
&model->Texture[index])))
model->Texture[index] = NULL; // if there is no texture, set the texture to NULL
}
return;}
Я называю это так:
LoadModel(networkBase, TEXT("E:\\C++\\Skirmish\\X\\gridbox.x"));
Но я нашел свой старый Beginning DirectX книги и другой источник веб-сайт, который все используют этот тип отливку буфера материала из буфера временного материала как линия, которая рушится, делает. Пожалуйста помоги!
Могу ли я иметь вашу регистрационную информацию, я не могу успеть купить один им 13 лет;/ – Ramilol