OpenGL版本

6

我想开始学习OpenGL,以实现我长期以来一直想做的一些游戏想法,但我注意到有几个版本的OpenGL。

我希望支持旧电脑,所以我想知道OpenGL 2.1是否是最好的版本。甚至我的桌面机都无法运行OpenGL 4 :O

游戏的最低配置应该是DX9时代的显卡,因此大多数现代计算机都可以运行它(即使是低端集成显卡)。我将使用JOGL进行实现,因为我最擅长Java(以前做过Java3D),并且我想部署到所有3个主要操作系统。

考虑到这一点,你会给我推荐什么样的书呢?获取OpenGL 3或4的书是否毫无意义,因为我已经读到有很大的变化?我应该选择一个关于2.1的旧书吗?

3个回答

3

只是好奇,你在使用Linux吗?

Linux真的是主要瓶颈,或者说,运行开源驱动程序的Linux系统是瓶颈(使用ATI或NVIDIA驱动程序的系统不是问题,它们将支持最新和最伟大的)。虽然这方面的事情正在取得进展,今年早些时候发布了Mesa 8,终于有了一个开源的OpenGL 3解决方案。

如果我站在你的立场上,我一定会建议你不要忽略着色器。因为你正在使用JOGL,所以我会考虑使用OpenGL ES 2配置文件来实现它(既然你已经在使用Java,如果你认为合适,这将使一切都很容易地移植到Android上)

哦,另外,由于你正在购买图书,我建议你看一下《交互式计算机图形学:基于着色器的OpenGL自顶向下方法》(第6版)。

许多年前,我参加过一门大学课程,使用了早期版本的这本书。最近我买了第6版,只是因为我非常喜欢旧版,而且它的质量也很好 :)


我经常使用这三个操作系统,但主要是Windows和OSX。我不会考虑Android移植,因为我想到的游戏在移动设备上效果不佳 :) 我会看一下那本书,感谢你的回答。 - user859194

2
OpenGL 2.1可能是最好的选择。与DirectX 9c相比,它具有相对相同的兼容性,而DirectX 9c是Windows XP可以获得的最新版本。我知道有很多XP电脑存在。我的一些朋友仍然喜欢XP。
目前不支持这些API的图形卡可能已经非常过时了。
如果用户无法使用2.1运行您的游戏,则可能需要建议用户购买更新的计算机。如果您采用这种思路,甚至可以使用OpenGL 3.0。
在我看来,我会先尝试学习2.1并进行一些实践,然后开始使用3.x并最终使用4.x。大型游戏公司通常不关心兼容性,并要求用户购买新硬件。

谢谢你的回答。我想要的是与XP和DX9兼容的风格,因为它不会成为下一个COD;) 我看到有一本推荐的书叫做“OpenGL超级宝典”,但最新版似乎只涵盖了OpenGL 3,我应该寻找第四版吗? - user859194
1
第四版看起来很不错。它涵盖了2.1并且有很棒的例子和源代码,甚至还包括了Linux的Makefile。 - Basilio German
是的,我想我会去看看 :) - user859194

0
请记住,旧版OpenGL仍然受支持。如果您正在进行相对非复杂或非特定的操作,完全可以使用固定功能管道,而不必使用现代OpenGL。如果您想开始进行高级照明或类似的操作,那么现代OpenGL就非常有用了。
说实话,我有点喜欢旧版OpenGL,它更容易上手,可以更快地将东西显示在屏幕上。现代OpenGL非常强大,但代价是更加复杂,您需要编写更多的代码,并且在开始有效使用之前必须掌握更多的知识。
由于您提出了问题,主要区别在于自定义着色器的工作方式。着色器是在GPU上运行的程序。过去,这些着色器是预先编程的,因此您对希望它们如何工作的控制很少,因此在OpenGL中所能做的事情受到限制(虽然它完成了任务,但更为通用,因此不太强大)。因此,在现代OpenGL中,您可以通过使用称为GLSL的东西来自定义这些着色器的工作方式,例如有一种称为顶点着色器的着色器,它处理推送到GPU的点并确定如何定位这些点。

GLSL是一种类似于C语言的半汇编语言,它被推送到GPU中,这是旧版OpenGL和现代OpenGL之间的主要区别。

至于需要获取哪本书,你需要获取一本2.0版本的书籍来学习2.x版本,因为新版OpenGL与旧版完全不同。虽然有些概念可以转移到现代OpenGL中,但大部分内容都是截然不同的。我花了5美元购买了Andre Lamothe的《OpenGL游戏编程》。这是一本非常好的2.1版本入门书籍,代码是使用Win32编写的,由于Windows API几乎没有改变,所以书中的所有代码(如果不是全部)都能正常工作,即使这本书已经出版了12年(这表明它写得非常好),而且它实际上还有非常有趣的项目(比如动画机器人、旋转立方体等)。无论如何,祝你好运。这是一条漫长而艰难的道路,但它是如此值得。


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