我正在用一本书处理DirectX 9,#include d3dx9tex.h智能感知的例子表明这个文件不存在,结果hResult = D3DXGetImageInfoFromFile(filename.c_str(), &imageInfo);也显示了错误。我安装了DirectX 12。有人能帮上忙吗?
发布于 2016-10-28 00:51:00
所有的Direct3D 9编程书籍和教程都假定您使用的是DirectX开发工具包,在那里您可以找到D3DX支持库。DirectX软件开发工具包本身和Direct3D 9一样都是遗留的。D3DX9、D3DX10和D3DX11已被弃用。参见Where is the DirectX SDK?。
如果你使用的是Windows10(Windows12需要),或者Windows8.x或者Windows7,那么我的建议是学习Direct3D 11。Direct3D 9现在只有在你试图以Windows系统为目标的情况下才有用,并且在Windows8.x或Windows10上尝试使用Direct3D 9进行开发有许多注意事项。Direct3D 12是一个专业的图形应用编程接口,它假设你已经完全有能力编写Direct3D 11应用程序。DirectX Tool Kit的tutorials是一个很好的起点。您根本不需要遗留的HLSL来构建Direct3D 11应用程序,因为所有的头文件、库和DirectX编译器都包含在VS 2012、VS 2013和VS 2015中。
另请参阅Living without D3DX、DirectX SDK Samples Catalog、DirectX SDK Tools Catalog、DirectX SDKs of a certain age、The Zombie DirectX SDK
更新:有可用的DirectX Tool Kit for DX12。
我最近还将Direct3D 9的DDSTextureLoader和WICTextureLoader实现添加到了DirectXTex项目中。参见this blog post。
发布于 2020-03-12 17:36:23
d3d9helper.h (它包含在所有Windows SDK中)现在严格地说,您应该使用更现代的DirectX,除非这里的目的是支持旧版本的Windows。
但请记住,Windows7/8/ 10同时支持Windows11和DirectX 12,如果你只为Windows10发布一些东西,那么只需使用DirectX 12就可以了。最初的学习可能会有点令人望而生畏,但从开发人员的角度来看,它在控制硬件和管道方面要强大得多。
https://stackoverflow.com/questions/40285671
复制相似问题