2016-04-02 4 views
0

OK, в первую очередь здесь код проблемы:D3DX10CreateTextureFromFile возвращает неизвестную ошибку

D3DX10_IMAGE_LOAD_INFO loadInfo; 
ZeroMemory(&loadInfo, sizeof(D3DX10_IMAGE_LOAD_INFO)); 
loadInfo.BindFlags = D3D10_BIND_SHADER_RESOURCE; 

ID3D10Resource *texture = NULL; 
LPCWSTR imageFile = L"../test.bmp"; 
D3DX10CreateTextureFromFile(pD3DDevice, imageFile, &loadInfo, NULL, &texture, &hr); 

if (hr != S_OK) 
{ 
    _com_error err(hr); 
    LPCTSTR errMsg = err.ErrorMessage(); 
    MessageBox(mHwnd, errMsg, L"Error", MB_OK | MB_ICONEXCLAMATION); return false; 
} 

Проблема заключается в том, я не могу получить D3Dx10CreateTextureFromFile создать действующую структуру. Единственная ошибка, которую я получаю, это «Неизвестная ошибка 0x88790002», поэтому я не могу это понять самостоятельно. Я искал и не мог найти ничего подходящего.

pD3DDevice - это проверенное и проверенное устройство D3D10. Если я прокомментирую строку D3Dx10CreateTextureFromFile, все остальное отлично работает.

Я новичок в directx, поэтому любая помощь оценивается.

PS У меня есть необходимые файлы .h и .lib.

ответ

0

Старая утилита для поиска ошибок DirectX сообщает, что HRESULT 0x88790002 - D3D10_ERROR_FILE_NOT_FOUND. Попробуйте использовать для имени файла и дважды проверьте, что текущий рабочий каталог - это то, что вы ожидаете от него.

Обратите внимание, что на данный момент существует очень мало оснований использовать Direct3D 10 вообще. Вы должны использовать DirectX 11. D3DX9, D3DX10 и D3DX11 устарели и находятся только в устаревшем SDK DirectX. См. MSDN. Вы должны посмотреть на использование одного из многих открытых исходных текстов replacements для устаревшего D3DX10.