6

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

理想情况下,我也希望支持较旧的计算机,所以我想知道 OpenGL 2.1 是否是最好的版本。OpenGL 4 甚至无法在我的台式机上运行:O

游戏的最低规格类型将是 DX9 时代的显卡,因此基本上大多数现代计算机都会运行它(即使是低端板载显卡)。我会考虑 JOGL 的实现,因为我最了解 Java(过去做过 Java3D),我想部署到所有 3 个主要操作系统。

考虑到这一点,你会向我推荐什么样的书?阅读 OpenGL 3 或 4 的书是否有很大的变化?我应该接受一本关于 2.1 的旧书吗?

4

3 回答 3

3

只是出于好奇,你在 Linux 上吗?

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

我肯定会建议你不要忽略着色器,如果我在你的鞋子里,因为你使用的是 JOGL,我会考虑使用 OpenGL ES 2 配置文件来实现它(因为无论如何你都在使用 java,这将使一切都非常容易移植如果您认为合适,也可以到 android)

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

许多个月前,我在大学的一门课程中浏览了这本书的早期版本。最近买了第 6 版,只是因为我非常喜欢旧版,而且它的质量 :)

于 2012-05-13T00:24:29.943 回答
2

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

目前不支持这些 API 的显卡很可能已经过时了。

如果用户无法使用 2.1 运行您的游戏,您可能不得不建议用户购买更新的计算机。如果您采用这种想法,您甚至可能想要使用 OpenGL 3.0。

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

于 2012-05-12T12:55:15.523 回答
0

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

老实说,我有点喜欢老式的 OpenGL,它更容易,而且你可以更快地在屏幕上显示内容。现代 OpenGL 令人难以置信,但它的代价是变得更加复杂,您需要大量代码并且在开始有效使用它之前必须了解很多。

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

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

至于要买一本书,你将不得不为 2.x 买一本 2.0 的书,它甚至与新的 OpenGL 不在同一个球场。有一些通用概念可以转移到现代 OpenGL,但在大多数情况下它是完全不同的。我以 5 美元的价格订购了 Andre Lamothe 的 OpenGL 游戏编程?这是对 2.1 的非常好的介绍,并且代码是用 Win32 编写的,而且由于 Windows API 几乎没有改变,几乎所有代码(如果不是全部的话)的工作方式都是一样的,即使这本书已经有 12 年的历史了(去展示它写得有多好)并且它实际上有非常有趣的项目(动画机器人,前几个旋转立方体)。无论如何,祝你好运。这是一条艰难而漫长的道路,但它是如此有益。

于 2015-06-15T01:20:32.170 回答