Answers:
我建议为2D 使用SDL(http://www.libsdl.org/),这是我最初开始使用图形工具的地方,并且使用起来非常容易,尽管当时我还不太了解C ++。
这个 (镜像)是我开始的一组教程,发现非常有用(即使在大约4年前,当我阅读它们时,它们也有些过时,但是我认为SDL并没有太大变化,它们仍然应该相关)。
SDL还可以进行输入处理,而SDL_Mixer可以进行基本音频处理。
我从未在2D方面使用DirectDraw或OpenGL,因此我无法在其中发表评论,但是我绝对可以推荐SDL。
我在游戏项目中同时使用了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 +。
http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=263140&reply_id=3598844
我同意这些言论,并认为这是关于DirectX为什么比OpenGL更好的讨论。
那本日记是对在沃尔夫雷的大卫的回应。
我希望这可以使它有所平衡。;)
但通常,如果您使用的是跨平台,跨API框架:
在Windows上使用DirectX,在* nix上使用OpenGL。
http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX
我同意这些说法,并认为这是关于OpenGL为什么比DirectX更好的讨论。
但是,这个问题绝对是一个问题,DirectX绝对具有它优于OpenGL的优势,尤其是10和11,尤其是在游戏开发的环境中。
另外,如果您选择使用OpenGL,SDL是一个很棒且非常受欢迎的库,并且有很多学习OpenGL的资源(NeHe等)-但这也许是另一个问题的地方。
Haaf的游戏引擎
我不知道它是最新的(我是说不是,但是我不认为有任何理由不应该使用它),但是我前一段时间使用了它(C ++),我真的享受吧。HGE自05.08起未更新,但我仍然记得它非常简单易学且快速。它还带有各种工具和助手,例如粒子系统。
无论如何,如果您想要创建一个实际的游戏,而不是学习绘画过程中“引擎盖下”等东西,那么我建议您使用比openGL或DirectX更高级的东西,或者您将花费时间在屏幕上绘制内容,而不是创建实际的游戏。HGE绝对值得一试。
我和您现在的位置相同,几个月前我才刚开始从事游戏开发工作(在iPhone平台上)。来自C背景,我实际上建议您使用框架(尤其是Cocos2d)。
接下来可以在本文中讨论框架的优点,但主要是它使用OpenGL处理大多数低层处理,并为您提供处理游戏开发者最可能需要的方法。他们有一个很棒的社区,是开源的,因此,如果您需要访问框架的核心代码/对其进行任何修改以适合您的需要/如有必要,可以使用低级OpenGL-您仍然可以选择。
您可以采用直接OpenGL的方法,但对我而言,这似乎有点过头了。
您很可能还希望研究那里存在的各种不同的物理库-Google Chipmunk和Box2D以获取更多信息。
干杯!