【发布时间】:2015-03-13 03:56:00
【问题描述】:
所以,我已经尝试找出我的问题几个小时了,但我不知道我做错了什么。在 DirectX 编程方面,我是个菜鸟,所以我一直在学习一些教程,现在,我正在尝试创建一个 obj 加载器。 http://www.braynzarsoft.net/index.php?p=D3D11OBJMODEL
但是,我的纹理无法正常工作。
这是我尝试加载 DDS 纹理的方式:
ID3D11ShaderResourceView* tempMeshSRV = nullptr;
hr = CreateDDSTextureFromFile(gDevice, L"boxTexture.dds", NULL, &tempMeshSRV);
if (SUCCEEDED(hr))
{
textureNameArray.push_back(L"boxTexture.dds");
material[matCount - 1].texArrayIndex = meshSRV.size();
meshSRV.push_back(tempMeshSRV);
material[matCount - 1].hasTexture = true;
}
但是,我的 HRESULT 永远不会成功,但它也不会崩溃。如果我将鼠标悬停在 hr 上,它只会显示“HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED) 我也尝试删除 if 语句,但这只会让我的盒子变黑。 知道我做错了什么吗? =/
提前致谢!
【问题讨论】:
-
看起来您正在使用 DirectXTex 库,因此您应该拥有实际的源代码。如果您尝试在调试器中单步执行该函数,它会在哪里失败?
-
我正在使用 DirectX 工具包。我介入了它,但是呃..我不确定它到底是哪里出错了..
-
请注意,您可以使用 DirectXMesh 中的 meshconvert 将 Wavefront OBJ 模型转换为 VBO、CMO 或 SDKMESH,然后使用
Model加载带有 DirectX Tool Kit 的模型。查看here 进行演练。
标签: c++ directx directx-11 hresult dds-format