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.


person squeaky    schedule 02.04.2016    source источник


Ответы (1)


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

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

person Chuck Walbourn    schedule 03.04.2016