ОК, в первую очередь вот код проблемы:
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.
Старая утилита DirectX Error Lookup говорит, что HRESULT 0x88790002 D3D10_ERROR_FILE_NOT_FOUND
, Попробуйте использовать L"..\\test.bmp";
для имени файла и перепроверьте, что текущий рабочий каталог соответствует ожидаемому.
Обратите внимание, что на данный момент очень мало причин использовать Direct3D 10 вообще. Вы должны использовать DirectX 11. D3DX9, D3DX10 и D3DX11 устарели и находятся только в устаревшем DirectX SDK. Увидеть MSDN. Вы должны посмотреть на использование одного из многих открытых источников замены для наследства D3DX10.
Других решений пока нет …