开始3D编程/OpenGL

5

我对C/C++/Java比较熟悉,但我大多数只做过命令行编程(除了Java中的GUI)。

我对3D编程非常感兴趣,但问题是我觉得自己知道的太少了,甚至不确定从哪里开始学习,所以我在寻找相关资源时遇到了困难。

我希望有人能指点我一下如何入门,推荐一些资源或教程。

我知道两个主要平台是OpenGL和Direct3d。我的问题是哪一个更好学?

我最初从http://nehe.gamedev.net上的一些教程开始学习OpenGL,但后来发现那里的大部分内容已经过时或者风格不好。

后来我了解到最新版本的OpenGL是4.x,而我的显卡(HD 4890)只支持OpenGL 2.x,且才使用了一年左右。

我想学习如何基本地“走”在三维环境中,例如迷宫。


2
你的显卡肯定支持OpenGL 3,只是驱动程序可能有点过时。但这并不是真正的问题,因为OpenGL的扩展机制允许在旧版本中使用更新的功能。 - datenwolf
HD 4890不仅仅是一年前的产品,它早在2009年4月就已经问世了。而@datenwolf所说的只需要更新驱动程序就可以了,根据维基百科的资料,整个HD4xxx系列都支持DirectX 10.1和OpenGL 3.3。 - Ben Voigt
你只需要学习OpenGL 2.1就可以了。3.0和4.0中的大部分新内容都是专业化的,将制造商的扩展合并到主流中,或者是追赶版本号而已。 - Martin Beckett
5个回答

1

我个人没有使用过OpenGL,只用过XNA中的DirectX。但据我所知,OpenGL比DirectX(更不用说跨平台)要容易学习一些,所以这可能是一个更好的开始。你不必担心太多关于创建纹理(例如使用Maya)的特殊格式的事情;你可以只使用JPEG文件或其他格式来让它工作。我听说Java Monkey Engine也很不错。

如果你正在使用Windows并且跨平台兼容性不是问题,那么一定要尝试Microsoft XNA Game Studio,它非常适合初学者进行游戏编程——快速而简单、强大。 (你需要学习C#,但应该很容易,因为你有足够的经验。)


1

如果您对3D编程更感兴趣,而不是底层的OpenGL/DirectX,我建议使用某种框架或游戏引擎,比如XNA,这样你就不必(太多)关注低级别的东西。然而,如果您想学习OpenGL或DirectX,则应从2D开始,因为它仍会教您API,但它会更简单(因为您不必同时处理3D和API),尽管如果您只是制作一个简单的迷宫游戏(如您所说),也可以选择此选项。

对于现代OpenGL,最新的SuperBible涵盖了它; http://www.arcsynthesis.org/gltut/ 也涵盖了它;http://www.swiftless.com/opengltuts/opengl4tuts.html同样也涵盖了它。

要回答OpenGL或DirectX哪个更好的问题,如果您对任何一款或仅限于XNA / Xbox / Windows Phone感兴趣,请选择后者,如果您正在使用Linux / 想要编写跨平台游戏,请选择前者。我认为较新版本的OpenGL与DirectX非常相似。

https://gamedev.stackexchange.com/ 可能会对你有所帮助;那里有很多针对初学者的问题;请参见https://gamedev.stackexchange.com/search?q=beginnerhttp://www.gamasutra.com/blogs/LewisPulsipher/20110516/7453/So_Youre_Going_To_Make_A_Game_For_The_Very_First_Time.php 也提供了一些不错的建议(虽然是关于游戏而不是3D编程)


1

OpenGL和DirectX共享许多概念,但如果您想要跨平台,则OpenGL肯定是更好的选择。特别是如果您想要针对较新的平台,如Android或WebGL。

您可能会发现使用现成的3D引擎比从“原始”的OpenGL开始更容易。以下是一些入门选项:

  • 如果您有Java经验,可以考虑查看jMonkeyEngine。它是一个完整的OpenGL游戏引擎(在底层使用LWJGL,支持bullet物理引擎、着色器架构、完整的SDK等),并附带一些很好的示例代码。
  • 在C++方面,我曾听说过Ogre3DIrrlicht
  • 在维基百科上有一个大游戏引擎列表

0

我之前确实学习过一些2D XNA教程,而且我同意它们非常容易学习。你只能发布到Xbox 360 / Windows Phone吗?我知道使用XNA可以“可能”发布到PC上,但实际操作起来有多实用呢?虽然我不打算发布游戏,但我想学些不仅限于一两个平台的东西。 谢谢 - Bob

0

这本书:http://www.amazon.com/Introduction-Game-Programming-Direct-9-0c/dp/1598220160 是一本非常适合学习使用DirectX进行现代(也就是基于着色器)图形编程的好书。还有一本更新的DX10版,我相信也很不错,但我并没有实际查看过。

我不知道是否有一个等价的OpenGL书籍,也许其他人可以建议一些。不过一旦你掌握了基本概念(顶点缓冲区、着色器、渲染状态等),在GL和DX之间移动并不难,因为它们都基本上是相同的图形硬件接口。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接