2d Game Dev(C ++)入门:DirectX还是OpenGL?[关闭]


12

因此,我是一名学生,希望进入游戏开发的大门,而我却希望做2D事情,也许是俄罗斯方块/太空入侵者/带有小鼠标互动克隆的东西。

我将搜索指向C ++和2d,最终导致了DirectX / OpenGL

现在,据我所知,所有这些软件包对我来说都是在屏幕上绘制东西。这就是我现在真正关心的全部。声音不是必需的。输入可能可以用stdlib处理。

因此,对于尝试使用C ++创建基本游戏的初学者,您会推荐DirectX还是OpenGL?为什么?两者之间有哪些主要功能差异?哪个更有用?

Answers:


16

我建议为2D 使用SDL(http://www.libsdl.org/),这是我最初开始使用图形工具的地方,并且使用起来非常容易,尽管当时我还不太了解C ++。

这个 (镜像)是我开始的一组教程,发现非常有用(即使在大约4年前,当我阅读它们时,它们也有些过时,但是我认为SDL并没有太大变化,它们仍然应该相关)。

SDL还可以进行输入处理,而SDL_Mixer可以进行基本音频处理。

我从未在2D方面使用DirectDraw或OpenGL,因此我无法在其中发表评论,但是我绝对可以推荐SDL。


1
我发现SDL很好,但是很难获得路径并正确设置设置。
Skeith 2011年

1
另请查看lazyfoo.net/SDL_tutorials,以获得一些不错的教程(包括各种IDE的安装教程)。
BeanBag 2013年

同意@Skeith。我无法想象初学者第一次获得SDL设置的麻烦。对于业余爱好者甚至专业人士来说,解决一些常见的设置问题都非常困难。首次设置SDL之后,我可以轻松进行余生的所有设置。那让我头疼多少;与建立图书馆相比,我学到了多少经验。回想起到底是什么给了我最多的问题,或者是我遇到了什么问题,时间太久了,但是所有其他库都很容易设置。
Carter81 2013年

7

我在游戏项目中同时使用了SDL和SFML。我将SDL用于完成的游戏,俄罗斯方块游戏,而我主要将SFML用作着色器实验的窗口层。根据我的经验,我不得不说SDL就是它的意思。这是一个简单的直接媒体层,它将您的媒体(声音和视频)所使用的数据抽象到可以在不同平台上进行交互的水平。这就是“所有”。

因此,通常必须将其与其他一些库混合使用,其中最著名的是SDL_mixer,SDL_gfx和SDL_image,它们提供了创建游戏所需的功能。

所有这些库都适用于C编程语言,并且遵循其约定。并不是说这有什么问题,但是如果您想要一种与io交互的面向对象方法,那么您基本上必须自己构建该层。

SFML附带了所有现成的东西。它有声音,有视频,有混合,有帧上限,并且是面向对象的。如果那是您想要的,我建议您继续。SFML还为opengl中的某些基本功能(特别是beginShape / EndShape和像素着色器)提供了一个抽象层。我不认为SDL具有这样的功能,只是一种与之合并的方法。

PS并不是要摆脱C / C ++的对话,但是如果您出于某种特殊原因不使用该语言,并且想要一种更简单的语言,那么总有pygame。基本上是Python的SDL +。


2
SFML也是C ++,而SDL也是C。如果您确实想学习C ++,这会有所不同。
jsimmons

5

http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=263140&reply_id=3598844

我同意这些言论,并认为这是关于DirectX为什么比OpenGL更好的讨论。

那本日记是对在沃尔夫雷的大卫的回应。

我希望这可以使它有所平衡。;)

但通常,如果您使用的是跨平台,跨API框架:

在Windows上使用DirectX,在* nix上使用OpenGL。


好读=)这个主题是什么雷区...
Nailer

6
404,找不到页面
axel22 2011年


我在archive.gamedev.net / ...链接上看到404。
2013年

4

http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX

我同意这些说法,并认为这是关于OpenGL为什么比DirectX更好的讨论。

但是,这个问题绝对是一个问题,DirectX绝对具有它优于OpenGL的优势,尤其是10和11,尤其是在游戏开发的环境中。

另外,如果您选择使用OpenGL,SDL是一个很棒且非常受欢迎的库,并且有很多学习OpenGL的资源(NeHe等)-但这也许是另一个问题的地方。


1
与OGL与DX的讨论相反,Unity成员明确决定在Windows上切换到DirectX,因为大多数视频卡的默认OpenGL驱动程序太糟糕了。我前面没有参考资料,但是在他们的会议上,他们说了一些与OGL驱动程序类似的事情,这是Windows上的#1崩溃问题。幸运的是,它们的抽象层意味着从用户的角度来看,您实际上并不关心。
Tetrad

我们为Unix和Windows开发面向业务的可视化软件,我可以确认我们在Windows上看到的大多数问题与OpenGL驱动程序有关。
drxzcl 2010年

1

如果您只是开始,最好使用现有的2D引擎或框架,例如SFML


1

我喜欢Direct X,并且已经在许多项目中使用了几年,但是如果您的学习确实要注意版本问题。

我发现大多数直接x代码都无法在不同版本下进行编译,如果您尝试按照教程进行操作,这可能会很麻烦。

我推荐Direct X,因为所有功能都有,可以让您在开始时更轻松,然后在前进时使用更高级的方式进行操作。


1

Haaf的游戏引擎

我不知道它是最新的(我是说不是,但是我不认为有任何理由不应该使用它),但是我前一段时间使用了它(C ++),我真的享受吧。HGE自05.08起未更新,但我仍然记得它非常简单易学且快速。它还带有各种工具和助手,例如粒子系统。

无论如何,如果您想要创建一个实际的游戏,而不是学习绘画过程中“引擎盖下”等东西,那么我建议您使用比openGL或DirectX更高级的东西,或者您将花费时间在屏幕上绘制内容,而不是创建实际的游戏。HGE绝对值得一试。

http://hge.relishgames.com/


0

我和您现在的位置相同,几个月前我才刚开始从事游戏开发工作(在iPhone平台上)。来自C背景,我实际上建议您使用框架(尤其是Cocos2d)。

接下来可以在本文中讨论框架的优点,但主要是它使用OpenGL处理​​大多数低层处理,并为您提供处理游戏开发者最可能需要的方法。他们有一个很棒的社区,是开源的,因此,如果您需要访问框架的核心代码/对其进行任何修改以适合您的需要/如有必要,可以使用低级OpenGL-您仍然可以选择。

您可以采用直接OpenGL的方法,但对我而言,这似乎有点过头了。

您很可能还希望研究那里存在的各种不同的物理库-Google Chipmunk和Box2D以获取更多信息。

干杯!


1
+1代表不应该处于-2。该网站上的巨魔无缘无故地给人以负面印象。老实说,我什至不理解为什么它们甚至允许显示0以下的任何内容。就像YouTube允许弃权一样,这是愚蠢的。
Carter81 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.