D3DX10CreateTextureFromFile returns 未知错误
D3DX10CreateTextureFromFile returns unknown error
OK,首先这里是问题代码:
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 来创建有效的纹理。我得到的唯一错误是 "Unknown Error 0x88790002" 所以我真的无法自己解决这个问题。我已经搜索过,但找不到任何相关内容。
pD3DDevice 是一个有效且经过测试的 D3D10 设备。如果我注释掉 D3Dx10CreateTextureFromFile 行,其他一切正常。
我是 directx 的新手,所以非常感谢您的帮助。
PS 我有所需的 .h 和 .lib 文件。
旧的 DirectX 错误查找实用程序显示 HRESULT 0x88790002 是 D3D10_ERROR_FILE_NOT_FOUND
。尝试使用 L"..\test.bmp";
作为文件名并仔细检查当前工作目录是否符合您的预期。
Note that at this point there's very little reason to use Direct3D 10 at all. You should use DirectX 11. D3DX9, D3DX10, and D3DX11 are deprecated and are only in the legacy DirectX SDK. See MSDN. You should look at using one of the many open source replacements for legacy D3DX10.
OK,首先这里是问题代码:
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 来创建有效的纹理。我得到的唯一错误是 "Unknown Error 0x88790002" 所以我真的无法自己解决这个问题。我已经搜索过,但找不到任何相关内容。
pD3DDevice 是一个有效且经过测试的 D3D10 设备。如果我注释掉 D3Dx10CreateTextureFromFile 行,其他一切正常。
我是 directx 的新手,所以非常感谢您的帮助。
PS 我有所需的 .h 和 .lib 文件。
旧的 DirectX 错误查找实用程序显示 HRESULT 0x88790002 是 D3D10_ERROR_FILE_NOT_FOUND
。尝试使用 L"..\test.bmp";
作为文件名并仔细检查当前工作目录是否符合您的预期。
Note that at this point there's very little reason to use Direct3D 10 at all. You should use DirectX 11. D3DX9, D3DX10, and D3DX11 are deprecated and are only in the legacy DirectX SDK. See MSDN. You should look at using one of the many open source replacements for legacy D3DX10.