我对DirectX非常陌生,只学了一个星期。我发现并从中学到的一组强大的经验教训是braynzarsoft d3d12课程。这很难,有很多信息,但这是我喜欢的。
课程似乎还没有完成,我决定在互联网上搜索如何制作一个球,也许有现成的顶点矩阵,或者一些描述球面顶点的算法。我找到了这个问题,其中一个人说我正在做的事情实际上是不推荐的,现在我应该使用DirectX工具包进行编程。
我真的很困惑--我做得很好,但是我所有的代码都工作得很完美,而且我想要的就怎么做。
有DirectX编程经验的人能向我解释一下为什么我所做的不被推荐,我一般应该做什么,在哪里我可以得到球面顶点?
目前,我编写了简单的顶点和像素着色器,初始化了d3d12设备、交换链、命令列表,描述了四角体的顶点,并编写了一个类,可以添加、移动、旋转和缩放立方体,这是我在Update()调用中在UpdatePipeline()之前执行的。
我的尝试
在DirectxTK中,有一个函数D3DXCreateSphere,它将LPD3DXMESH *ppMesh和LPD3DXBUFFER *ppAdjacency接口作为输出参数。也许,我可以从他们那里得到我需要的顶点数组。但是无论如何,我不可能将DirectxTK代码与我的代码结合起来。
发布于 2020-03-28 00:58:00
简而言之,作为Windows8SDK(大约2011年)开发工作的一部分,"DirectX SDK“被迁移到Windows中。DirectX库、标头和工具被移到Windows中,"DirectX SDK“被宣布为废弃版(即2010年6月发布的DirectX SDK是最后一次发布)。
微软为Windows8将示例转移到了网上,因此DirectX SDK中的大多数示例都被放弃,转而使用Windows商店/UWP示例。作为一个个人项目,我已经在GitHub上更新了一堆Direct3D 11示例,因此它们只使用Windows。
正如Microsoft页面所指出的,迁移中留下了许多技术。
D3DX10。见僵尸DirectX SDK和DirectX SDK在哪里?
至于您应该使用什么,我已经创建了一些库来替换D3DX9/D3DX10/D3DX11中的内容。请参阅无D3DX生活
对于DirectX 12开发,遗留的DirectX SDK从来不支持它。示例在GitHub上,否则您应该只使用Windows10SDK。我在DirectX上也有一个DirectX 12工具包的版本。也就是说,如果您是DirectX新手,那么您应该考虑从DirectX 11开始。 有
D3DX12这样的东西,但它与旧的D3DX11库不完全一样。D3DX11有用于加载纹理、执行BC压缩等的代码,并且需要一个标头和一个运行时DLL。与您的游戏一起发布DLL的唯一方法是使用遗留的DirectX设置。D3DX12只是一些辅助函数的头。没有DLL和REDIST。创建DirectX 12 Visual模板时,通常会将其复制到项目中,并且可以从GitHub下载该模板。有关D3DX12的更多信息,请参见这篇博客文章。
DirectX工具包用于DX11和DX12、DirectXTex、DirectXMesh、DirectXMath和UVAtlas,它们提供了D3DX9、D3DX10和D3DX11所做的大部分内容,但它们都支持DirectX 11和DirectX 12。它们都是开源的,因此没有DLL或REDIST:您只需自己从源代码构建它。它们不是“插入”的替代品,但它们以更现代的C++形式提供了相同的功能。它们支持为经典的“C++”开发、通用Windows平台()应用程序或Xbox编写的任何Win32程序。
实际上,这是我过去十年来在博客中讨论的主要主题。很多细节,如果你想要更多的信息,发生了什么。
更新:在使用开放源码替代D3DX9/D3DX10/D3DX11的同时,仍然推荐使用 11或Direct3D 12,当然还有很多使用D3DX的现有教程和代码库。为了支持这些场景,而不需要凌乱的怪癖尝试在现代Windows中使用遗留DirectX SDK,您可以使用Microsoft.DXSDK.D3DX NuGet包。使用这个包,我能够将Direct3D 9和Direct3D 10遗留DirectX SDK示例重新发布到GitHub。
https://stackoverflow.com/questions/60874509
复制相似问题