我正在尝试在 directx 中加载纹理以绘制带纹理的四边形。
但是 D3DXCreateTextureFromFile 永远不会返回 D3D_OK ....
这是我加载纹理的代码....
FeralTexture(string Name,FeralVector2 Position,IDirect3DDevice9 *device)
{
FileName = Name;
m_pDevice = device;
x= Position.x;
y= Position.y;
if(D3DXCreateTextureFromFile(m_pDevice,FileName.c_str(),&m_pTextureFile) != D3D_OK)
{
TextureCreated = false;
m_pTextureFile = NULL;
D3DXCreateTextureFromFile(m_pDevice,FileName.c_str(),&m_pTextureFile);
}
else
{
if(D3DXGetImageInfoFromFile(FileName.c_str(),&ImageInfo) == D3D_OK)
{
TextureCreated = true;
Width = ImageInfo.Width;
Height = ImageInfo.Height;
MinVector = FeralVector2(x,y);
MaxVector = FeralVector2(x+Width,y+Height);
//BoundingRect = FeralRect2(MinVector,MaxVector);
}
else
{
Width = 0;
Height = 0;
}
}
}
我将图像的拷贝放在项目的调试文件夹和项目的主文件夹中... 两者都不起作用....
任何输入将不胜感激......
最佳答案
- 确保纹理文件名正确
- 如果第 1 步不起作用,请尝试在您的程序中使用纹理文件的绝对路径。
如果仍然无效,请尝试使用 DirectX 调试运行时,从 C:\Program Files\Microsoft DirectX SDK(2010 年 6 月)\Utilities\bin\x86(路径取决于您所在的位置)打开 DirectX 控制面板 (dxcpl.exe)安装 DirectX SDK)并进行如下设置
然后在 Debug模式下运行您的应用程序,您将从 Visual Studio 的输出窗口中获得详细的错误消息,它会告诉您问题出在哪里。
D3DXCreateTextureFromFile 支持以下纹理格式
.bmp、.dds、.dib、.hdr、.jpg、.pfm、.png、.ppm 和 .tga
确保您的纹理格式在上面的列表中。
D3DXCreateTextureFromFile 有以下返回码,您可以检查返回值并修复您的应用。
- D3D_OK
- D3DERR_NOTAVAILABLE
- D3DERR_OUTOFVIDEOMEMORY
- D3DERR_INVALIDCALL
- D3DXERR_INVALIDDATA
- E_OUTOFMEMORY
关于c++ - 在 Directx 中加载纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18613229/