OpenGL版本

时间:2012-05-12 12:29:36

标签: java opengl jogl java-3d

所以我想开始玩OpenGL,以便实现我已经有很长一段时间的游戏创意,但我注意到有几个版本的OpenGL。

我理想上也想支持旧电脑,所以我想知道OpenGL 2.1是否是最好的版本。 OpenGL 4甚至不能在我的台式机上运行:O

游戏的最低规格类型是DX9时代的显卡,所以基本上大多数现代计算机都会运行它(即使是低端的板载显卡)。我会关注JOGL实现,因为我知道Java是最好的(过去已经完成了Java3D),我想部署到所有3个主要操作系统。

考虑到这一点,你会建议我什么样的书?获得一本OpenGL 3或4本书是否毫无意义,因为我读过有很大的变化?我应该选择2.1上的旧书吗?

3 个答案:

答案 0 :(得分:3)

出于好奇,你在Linux上吗?

Linux确实是这里的主要瓶颈,或者更确切地说,使用开源驱动程序运行的Linux系统是瓶颈(具有ATI或NVIDIA驱动程序的系统不是问题,它们将支持最新和最好的)。事情正在形成这一方面,随着今年早些时候发布的Mesa 8,终于有了一个开源的OpenGL 3解决方案。

我肯定会建议你不要忽视着色器,如果我在你的鞋子里,因为你正在使用JOGL,我会考虑使用OpenGL ES 2配置文件实现它(因为你无论如何都使用java,这将使一切如果你认为合适的话,很容易移植到Android上。

哦,另外,既然你正在购买书籍,我会看看交互式计算机图形学:采用基于着色器的OpenGL的自上而下方法(第6版)。

我很久以前就读过这本书的早期版本,以便在大学开设一门课程。最近买了第6版只是因为我非常喜欢旧版本,以及它的质量:)

答案 1 :(得分:2)

OpenGL 2.1可能是最好的。作为比较,它具有与DirectX 9c相同的兼容性,这是最新的Windows xp可以得到的,我知道有很多XP盒子。我的一些朋友仍然喜欢xp。

此时不支持这些API的图形卡很可能已经过时了。

如果用户无法使用2.1运行游戏,则可能需要建议用户购买较新的计算机。如果采用这种思路,你甚至可能想要使用OpenGL 3.0。

在我看来,我会首先尝试学习2.1并进行一些练习,然后开始使用3.x并最终使用4.x.大型游戏公司通常不关心兼容性并让用户购买新硬件。

答案 2 :(得分:0)

请记住,旧学校仍然支持OpenGL。您不必使用现代OpenGL,如果您正在做一些相对非复杂或非特定的事情,您可以完全使用固定功能管道。如果您想开始使用高级照明或类似的东西,那么现代OpenGL就派上用场了。

老实说,我有点像老式的OpenGL,它更容易,你可以更快地获得屏幕上的东西。现代OpenGL是令人难以置信的,但它的代价是更复杂,你需要这么多代码,你必须知道这么多,然后才开始有效地使用它。

您提出的主要区别是能够自定义着色器的工作方式。着色器是在GPU上运行的程序。在过去,这些着色器是预先编程的,所以你几乎无法控制你希望它们如何工作,因此你在OpenGL中可以做的事情受到限制(它完成了工作,它只是更通用,因此更少强大)。因此,使用现代OpenGL,您可以自定义着色器的工作方式,例如,有一种称为顶点着色器的东西,它是一个着色器,用于处理推送到GPU的点并确定这些点的位置。在现代OpenGL中,您可以使用名为GLSL

的东西自定义这些着色器的工作方式

GLSL是一种C风格的半汇编语言,推向GPU,这是旧版和现代版OpenGL之间的主要区别。

就一本书而言,你将不得不获得2.x的2.0书,它甚至不和新的OpenGL在同一个球场。有一般概念转移到现代OpenGL,但在大多数情况下它是完全不同的。我订购了Andre Lamothe的OpenGL游戏编程,我认为5美元?它是2.1的一个非常好的介绍,代码是用Win32编写的,因为Windows API几乎没有任何变化,几乎所有的代码(如果不是全部)都工作相同,即使这本书大约12岁(去显示它是如何写得好)它实际上有非常有趣的项目(动画机器人,前几个旋转立方体)。无论如何,祝你好运。这是一条艰难而漫长的道路,但它是如此有价值。