我使用此代码加载纹理:
HRESULT hr = D3DXCreateTextureFromFile(d3ddev, "test.bmp", &g_texture);
但它总是返回D3DXERR_INVALIDDATA
错误!
我正在渲染的三角形工作得很好,所以程序的其余部分正在工作,除了纹理加载。
我错过了什么?该文件肯定存在。我也尝试过使用 jpg 和 png,以及尺寸为 256x256 的较小图像。该图像对我来说效果很好......所以它不能是无效数据,即使它是这么说的。
最佳答案
最有可能的是,即使该文件可用,但它并不位于程序访问的正确路径中。
如果您在 Visual Studio 中运行程序,请确保工作目录指向包含 test.bmp
的文件夹。不幸的是,这个设置的位置在不同版本的 VS 之间变化很大,但在 VS 2005 中它是Project->Properties->Debugging->Working Directory
。确保调试和 Release模式具有相同的设置。
您可以通过代码 GetCurrentDirectory 检查当前目录.
关于c++ - 如何在 DirectX 上加载纹理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8782834/