使用 Direct 3D (C++) 的 DIrectX 11 2D 游戏引擎

Posted

技术标签:

【中文标题】使用 Direct 3D (C++) 的 DIrectX 11 2D 游戏引擎【英文标题】:DIrectX 11 2D Game Engine using Direct 3D (C++) 【发布时间】:2016-10-16 17:55:03 【问题描述】:

我在 Internet 上搜索了有关使用 Direct 3D 在 DirectX 11 中创建 2D 游戏引擎的帮助(而不是 Direct 2D 包装器,大多数网站似乎都认为这并不理想)。

我找到了大量详细说明如何创建 3D 游戏引擎的资源,但由于这是我第一次尝试引擎,我宁愿使用 2D 并省去 3D 数学的麻烦...我还发现关于在 DirectX 9 中创建 2D 引擎的大量信息和教科书,但据我了解,DirectX 9 处理很多这些事情的方式与 DirectX 11 非常不同——我宁愿学习最新最好的(忽略 DIrectX 12 显然,许多网站似乎都认为这不是 2D 的理想选择)

因此,任何人都可以推荐任何可以帮助我使用 DirectX 11 3D 用 C++ 构建 2D 游戏引擎的好网站、教科书、视频、教程等吗? --或者,我应该做一些完全不同的事情吗?

其他一些注意事项: 我不想使用 OpenGL; 我已经看过了:http://www.directxtutorial.com/LessonList.aspx?listid=11 和 http://www.rastertek.com/dx11tut11.html 等等。

【问题讨论】:

好吧,听起来您一般是游戏编程的新手,所以制作一个游戏引擎可能有点牵强。我会先更熟悉游戏编程,所以你会知道游戏程序员可能想要什么功能。我首先使用现有的 2D 库(或允许 2D 的库)创建一个简单的游戏,例如 SDL。 要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。而是描述问题 查看DirectX Tool Kit,它是tutorials。您可以使用 SpriteBatch 做很多事情,就像使用 XNA Game Studio 一样。 @ChuckWalbourn 这是一个很好的建议,谢谢!我一直在研究 XNA。 @Frecklefoot 我之前在 Unity 中创建了一些游戏,但我发现使用这样的编辑器真的让我的学习变得黑箱,这就是我想创建自己的引擎的原因. 【参考方案1】:

如果您只做 2D,DirectX 2D 就是您想要的。它是硬件加速的,您可以使用与 DirectX 11 和 12 共享的数学库来简化 3D 引擎的工作。如果您最终将其转换为 3D,Chuck W. 评论 DirextX 工具包是一个不错的选择。 Chuck,顺便说一句,您还在编写您去年提到的 DirectX 12 Sprite 批处理类吗?看到那真是太棒了。

【讨论】:

我对使用 DirectX 2D 犹豫不决,因为我听到了很多关于它的负面评论...braid-game.com/news/2009/01/… 考虑你想做什么。您的帖子说“协助创建 2D 游戏引擎”,即图形 + 游戏代码。你想要 80% 的时间花在游戏代码上,20% 的时间花在编码 graphcis 上吗?还是虎钳?这是您的第一个引擎,我不会尝试学习 HLSL 和必须发生的 CPU/GPU 握手,将其留给 DirectX2D 之类的 API。你有足够的担心边界框、碰撞、状态机、用户输入、动作响应控制、声音、资产加载、动画、路径查找等 - 祝你好运并为所有这些查询使用 stackover 流,它帮助了我很多。 DirectX Tool Kit for DirectX12 现在可用,包括SpriteBatch。见this tutorial lesson。 太棒了,感谢 Chuck 让这成为现实。这是我在 DirectX 11 中使用过的最好的类之一,很高兴在 12 中看到它!

以上是关于使用 Direct 3D (C++) 的 DIrectX 11 2D 游戏引擎的主要内容,如果未能解决你的问题,请参考以下文章

如何确定安装了哪个版本的 Direct3D?

Direct3D 和 DXGI 之间的区别

Direct3D 编程新手:11 与 12

Direct3d 和 hlsl 不同大小的顶点和多维几何对象?

Direct3D 线条粗细

Direct2D 和 Direct3D 互操作性的方法