首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么反对d3dx?

为什么反对d3dx?
EN

Stack Overflow用户
提问于 2020-03-26 19:12:04
回答 1查看 1.3K关注 0票数 0

我对DirectX非常陌生,只学了一个星期。我发现并从中学到的一组强大的经验教训是braynzarsoft d3d12课程。这很难,有很多信息,但这是我喜欢的。

课程似乎还没有完成,我决定在互联网上搜索如何制作一个球,也许有现成的顶点矩阵,或者一些描述球面顶点的算法。我找到了这个问题,其中一个人说我正在做的事情实际上是不推荐的,现在我应该使用DirectX工具包进行编程。

我真的很困惑--我做得很好,但是我所有的代码都工作得很完美,而且我想要的就怎么做。

有DirectX编程经验的人能向我解释一下为什么我所做的不被推荐,我一般应该做什么,在哪里我可以得到球面顶点?

目前,我编写了简单的顶点和像素着色器,初始化了d3d12设备、交换链、命令列表,描述了四角体的顶点,并编写了一个类,可以添加、移动、旋转和缩放立方体,这是我在Update()调用中在UpdatePipeline()之前执行的。

我的尝试

在DirectxTK中,有一个函数D3DXCreateSphere,它将LPD3DXMESH *ppMeshLPD3DXBUFFER *ppAdjacency接口作为输出参数。也许,我可以从他们那里得到我需要的顶点数组。但是无论如何,我不可能将DirectxTK代码与我的代码结合起来。

EN

回答 1

Stack Overflow用户

发布于 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页面所指出的,迁移中留下了许多技术。

  • Direct3D 9开发被认为是遗留的,并且仍然使用它的主要原因是Windows支持。Windows 8 SDK不支持Windows开发--VisualStudio2012-2017通过使用Windows7.1A SDK支持Windows开发。如果您想以Direct3D 9为目标,您基本上只能使用遗留的DirectX SDK--尽管有些引擎有足够的自己的助手代码,并不真正需要D3DX9。
  • Direct3D 10开发被认为是遗留的。Direct3D 11是Direct3D 10的一个严格的超级集合,相同版本的Direct3D支持它,而功能级别机制意味着Direct3D 11比Direct3D 10在更多的硬件上工作。因此,不推荐使用助手库D3DX10
  • XACT图书馆没有结转。它主要是为Xbox 360创建的,所以已经被废弃了。
  • 托管DirectX 1.1已被废弃多年(~2005年)

僵尸DirectX SDKDirectX 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工具包用于DX11DX12DirectXTexDirectXMeshDirectXMathUVAtlas,它们提供了D3DX9D3DX10D3DX11所做的大部分内容,但它们都支持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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60874509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档