用于新Windows游戏项目的OpenGL或者Direct3D?或者是其他东西?

时间:2020-03-05 18:46:19  来源:igfitidea点击:

我正在Windows上启动一个业余游戏项目,该项目将大量使用3D图形效果。它很可能用C ++编写。

我应该在图形后端使用OpenGL还是Direct3D?为什么?

还是应该使用现成的图形引擎(例如OGRE 3D)?哪一个?

一些"如何入门"链接将很有用。 (使用任何一种技术,或者同时使用两种。)

编辑是的,感谢graham.reeds的澄清,我的意思是Direct3D,而不是DirectX。

编辑Mihai Lazar指出,我还可以使用OGRE 3D这样的图形引擎。编辑了问题以反映此替代方案。

解决方案

回答

从OpenGL开始,因为上面有不错的教科书和其他在线参考资料。一旦掌握了编写3D游戏的经验,便可以自己做出判断。

完成游戏,即使只是为了让我们前进而真的很愚蠢和简单,比选择合适的库更为重要。使用过剩,我们可以在一天内将一些3D对象显示在屏幕上。从NeHe的教程开始。

回答

首先,我们得到了OpenGL和Direct3D的维基百科比较。

但是我真的很想听听一些实用的观点,尤其是考虑到OpenGL3.0和DirectX 10的最新发展。

回答

我在uni上完成了OpenGL与Direct3D的比较。 Direct3D的真正好处是它具有定期的发布计划,并且始终会对其进行更新以利用图形硬件的最新进展。在OpenGL 2.0和3.0版本之间花费了多长时间?同样,在OpenGL扩展中已经做了很多工作,这意味着在某些卡上只能进行某些渲染。

话虽如此,OpenGL将更易于开始编程。由于Direct3D大量基于COM,因此学习曲线比较陡峭。

如果是我,我会选择DirectX而不是OpenGL。这是以非平台独立为代价的。

回答

最好的办法是尽可能多地对渲染器进行抽象,以尽可能轻松地移植到其他技术。

回答

我们也可以基于食人魔进行工作,它们自己提供抽象,并且它们具有非常好的工具。我认为这是一个已经开展了6年以上的项目。基本库并不是真正的初学者,因为我们需要了解一些软件设计,但是我发现很多人都在使用它来编写游戏。

因为它已经被抽象了,所以它比学习更重的内容更安全,更快捷。再加上两个月后,我们无论如何都会使用3D行话。还有一本书可以开始使用Ogre,我认为它现在已经很老了,但无论如何都是一个起点。

回答

我们必须记住DirectX是输入,音频和图形技术的集合。但是对于大多数人来说,DX是渲染器的代名词。

在我看来,自DX8以来,D3D(或者DirectGraphics)并没有那么难。我没有尝试过DX9或者DX10.

伯纳德(Bernard)尽可能地抽象是正确的尝试。尝试将DX或者OGL调用保持在对象类之外。

回答

假设我们知道自己在做什么,那么对引擎进行抽象的建议就很好。如果没有为图形编写好的抽象层,就很难做到这一点。

我建议我们选择一个。我们将足够容易地选择概念-足够使我们有可能在抽象层上工作,或者足够容易地使用其他库。但是就做吧。我真的不会太担心哪一个是正确的。他们都是好人,表现出色。 DX10(如果装有Vista)可能会具有更新的着色器模型的一点优势,但是对于从现在开始使用的人来说,这是无关紧要的。 GL的优点是,某些较麻烦的矩阵/矢量数学运算对我们来说是隐藏的,或者是为我们提供的(尽管我认为DX也具有其中的一些功能。)

回答

我们应该考虑的事情是平台独立性的决定。我们想将游戏绑定到Windows,还是想将其发布到Mac OS X或者Linux。如果我们决定将来要支持Linux,OS X,则需要使用OpenGL。

如果该游戏至少是针对Linux的半发行版,那么Linux社区似乎有很多善意。

回答

尽管OpenGL很容易上手,而且正如有些人已经写过的那样,让三角形显示在屏幕上,然后从那里移动到纹理,但是一天之内就可以完成粒子和更多操作。

但是我确实认为,要问的一个好问题是最终目标是什么。
如果它是一个简单的游戏,没有骨骼动画,那么简单的3D OpenGL绝对是答案。如果目标更高,又不想花时间从头开始开发所有技术(或者去寻找免费的库并将它们放在一起),那么DX是一个不错的选择,我会选择DX9c,直到DX11出来。

如果我们不介意使用C ++以外的其他语言,还应该看看XNA开发环境已经变得非常成熟和完善。

同样,如果我们知道可以以适当的价格为我们提供所需的大部分东西,并且可以节省我们自己开发它的时间,那么使用一个已经存在的引擎将是一件好事,主要问题是我们需要遍历几个游戏引擎(Ogre,Game Studio,Torque等),然后根据有限的经验做出选择,然后继续阅读尽可能多的临时开发者的评论,然后尝试看一下代码如果我们打算更改它。

希望能有所帮助。

回答

要很好地回答这个问题,需要有关更多信息:

  • 你的编程能力是什么?

如果很高,我可能会从Ogre(最好严格渲染的开源引擎,恕我直言)或者其他开源游戏引擎(如Delta3D)开始,如果我们想要游戏引擎带来的其他功能(声音,物理特性等) 。

如果我们不想使用引擎,那么我会使用Direct3D,因为它的更新速度比OpenGL快得多。我不想讨论所有问题,但是SIGGRAPH期间宣布了OpenGL 3.0版,社区中的大多数人对此感到非常失望。 Direct3D使我们处于更好的位置,以利用着色器和可编程管线的其他用途。

如果编程能力不是很高,并且我们正在这样做以学习编程,那么我将从OpenGL开始,因为它更容易学习并且网络上有更多资源(有关信息,请参见http://nehe.gamedev.net)。例子)。

回答

对于我们描述的情况,我建议我们使用Direct3D。

使用Direct3D而不是OpenGL的主要原因是,视频卡供应商通常只会在其"高端"卡的OpenGL驱动程序上做得很好。

低端游戏类型的卡往往会变得很差,而且驱动程序通常会出现故障,从而导致最终用户的计算机出现问题。

如果可移植性很重要,那么这将是考虑使用OpenGL或者Ogre的一个重要原因。

但是,如果我们从不打算移植,则请专注于Direct3D,因为它是更广泛的稳定平台,具有更好的IHV驱动程序支持。

回答

据我了解,在Direct3D中,我们必须自己处理所有资源分配和管理,而OpenGL规范则将其留给驱动程序/实现而不是应用程序。

这使Direct3D开发人员可以使用适合该应用程序的最佳分配和管理方法,但这也是额外的工作。

我已经在每个应用程序中完成了典型的" Hello World"应用程序,并且我更喜欢OpenGL,而不是Direct3D,但这只是我的看法。我们应该尝试两者,花一两天来学习和玩耍,然后自己决定。

回答

我以前没有OpenGL,DirectX或者视频游戏的经验,并且已经使用Ogre3d制作了一个开放源代码的竞赛视频游戏。是一个很好的视频游戏入门框架:完善的代码,网络上大量的文档和信息以及非常好的入门教程。

渲染引擎与DirectX / OpenGl无关,我们以后可以选择使用OpenGL或者DirectX渲染游戏(无需更改代码)

回答

如果我们愿意考虑使用C#,请仔细阅读XNA。对于爱好项目,假设我们想要真正启动并运行游戏而不是修改复杂的API代码,我不能推荐它足够高。它越来越成熟,文档完善,并且与D3D / OpenGL相比,它非常快速且易于使用。作为奖励,拥有100美元/年的Creators Club会员资格,我们甚至可以使用它来为Xbox 360开发游戏。

回答

我们必须考虑自己想要的东西,因为这是一个业余项目,我认为"学习内容"将是体验的主要部分,因此请避免捡起一些东西来隐藏东西并在幕后进行操作因为这只会给我们图片的一小部分。

我会选择Direct3D,因为它得到了更好的支持,我发现文档易于阅读,并且SDK附带了不错的示例。如果我们想在没有初期准备工作的情况下开始学习,甚至可以使用这些样本作为基础。

我从OpenGL开始做记录,大约一个月后转到Direct3d(当时为版本7)。我发现Direct3D迫使我更加了解自己想做的事情以及如何进行设置,但是我更喜欢这种理解水平。

重要的是,无论选择哪种方式,IMO都会逐步进行并定期将其显示在屏幕上。各种各样的原因导致屏幕上无法显示某些内容(它是透明的,相机位于对象内部等),因此,采取婴儿步骤并定期显示内容,可以同时验证事情还在继续发展并得到一点视觉上的奖励。

回答

我真的同意那些告诉我们学习Ogre3D的人的观点。我们说过要使用C ++,因此Ogre3D是一个不错的选择。 XNA使用Cand,除了学习XNA之外,我们还必须了解它与C ++之间的区别。另外,XNA既不是开源也不是跨平台的,因此,如果我们想对游戏开发有更广泛的了解,我建议我们先学习SDL,然后再学习Ogre3D。

回答

如果我们想进行跨平台编码,并且希望将所有渲染留给引擎,则Ogre3D非常有用。 OpenGL对于跨平台编码也非常有用,但是它也使我们无聊了很多,但是它提供了更好的控制。

如果我们想将游戏移植到其他平台,我会避免使用DirectX。计划未来。与OpenGL相比,DirectX 10可能会提供一些优势,但是除非我们是专业开发人员,否则我真的认为我们不会感觉到它们。否则,如果我们是Microsoft专业人员,则无论如何都应使用XNA,因为作为业余开发人员,我们将不需要DirectX提供的控制。

我现在使用OpenGL进行编码已经有一段时间了,而现在使用Ogre3D进行编码已经有几个月了,我不能说我还想要其他东西。我最近有一本关于DirectX 7的书,我认为它很杂乱。也许情况发生了变化,但是从我观察到的结果来看,我没有发现DirectX,并且通过推断Direct3D仍然有吸引力。

回答

不要以食人魔开始。

从OpenGL GLUT(Win32)和一两个教程开始。

只要我们可以移至Win32并浏览该站点,该站点现在已经很旧了,但是仍然相当不错。