0

从大学图书馆借了一本书。这不是我所希望的...

嗨,我是一名学生,整个夏天我借用了 OpenGL 编程指南 4.3 版,这是我的大学似乎在主库中唯一的版本。

我已经知道一些关于将 OpenGL 与 SFML、SDL 和 glut 一起使用的知识。我借了这本书来帮助我扩展知识。

不幸的是,我发现 4.3 的书非常繁重,难以理解。我确信我读过一本类似的书(旧版本,当时它被称为“红皮书”)并且发现它更容易理解。

我能够借到 2.1 版的书,而且我很确定这是我读过的那本书。到目前为止,我发现它容易遵循。它当然更适合非专家和经验较少的人。

请不要关闭这个问题...

这可能是那种受到不良欢迎并被投票关闭的问题,但请不要这样做 - 我想回答我的问题。我认为这是一个编程问题,对像我这样的其他人会有帮助。正如我稍后解释的那样,我想购买第 2 版或第 2.1 版的书,并希望得到一些建议。

TLDR?问题从这里开始:

基本上我想知道 OpenGL 2 版和 2.1 版之间的主要区别是什么。据我所知,有一本书适用于 1.0 版或类似的版本,然后是 2.0、2.1,然后是 3 或 3.5 或其他版本。为什么会有一个版本增量为 0.1 的全新书籍:从 2.0 版本到 2.1 版本。我假设在 2.1 版本中进行了一些重大更改或添加了扩展和功能?

问的原因是我非常喜欢这本书(2.1版),我想我应该买它!(疯狂,不是吗?)无论如何,我想知道 2.1 版中有哪些额外的东西,或者发生了什么变化,所以我可以决定是否值得额外花费。

4

1 回答 1

8

这可能不是您希望的答案,但是:不要费心学习 OGL < 3.0。所有的 OpenGL 都有很好的文档记录,您需要知道的所有内容都可以在 Internet 上找到。另请注意,红皮书在互联网上是完全免费的,至少是相关部分(据我所知)。无论如何,它主要关注旧的、已弃用的功能,我认为它不再值得一读。

OpenGL 3.0 引入了弃用机制,因此大部分 OpenGL 2.x 特性都被弃用了。这包括客户端内存、固定管道、内置照明计算等。OpenGL 2.x 确实包括可编程管道功能和服务器端缓冲区,但我仍然强烈建议使用现代 OGL。只是因为你不够谨慎。OpenGL 2.x 邀请您使用较旧的功能,因为它非常易于使用,但可能是重罪。

可编程管道、服务器端缓冲区以及 OpenGL 3.x 及更高版本的所有产品可能很难了解。但是,一旦您能够熟练使用这些功能,您就会被它的强大功能所震撼。在您的评论中您提到了粒子,如果您能够使用变换反馈、计算着色器、几何着色器、实例化渲染等,那么使用粒子进行实验会更有趣。事实是,现代 OpenGL 大大优于旧 OpenGL,它要快得多,而且专为现代硬件而设计。

我不知道为什么每个小版本都有一本新书,我想人们对书上瘾了。但是 OpenGL 3.x 及更高版本确实值得一本新书。它与以前的 API 完全不同——至少它的用法是。现在我个人不喜欢书,但这只是我。在 Internet 上了解 OpenGL 3.x 及更高版本的一个很好的起点是:

http://www.arcsynthesis.org/gltut/index.html

http://ogldev.atspace.co.uk/

http://www.opengl-tutorial.org/

第一个链接是了解管道的重要来源,我强烈建议您全部阅读。我真的很喜欢第二个链接,它有一堆关于一系列主题的小教程,它也是了解更复杂算法的好来源。第三个链接是一个更初学者风格的教程,以防您遇到困难。

此外,此文档还包含您可能想要的所有信息和详细文档,无论您要使用什么来源,都要对其进行跟踪:

http://www.opengl.org/wiki/Main_Page

您还提到您想在 linux 环境中进行实验。确保更新您的 OpenGL 驱动程序(实际上在任何操作系统上执行此操作)。现在根据网站 Mesa 只支持 OpenGL 3.1。我建议您使用专有驱动程序,这样您就可以使用您的 GPU 提供的所有功能(就个人而言,我正在使用 AMD 驱动程序在 linux mint 上运行 OpenGL 4.2),这包括几何着色器、曲面细分等类似内容。

最后一点,OpenGL ES 2.0+ 更容易与更新的 OpenGL 版本相互转换。OpenGL ES 2.0+ 不使用固定管道,也不使用客户端内存等。类似的 API 在网络上运行,即使网络已经发展,你也应该这样 :P

现在走出去,开始 OGL'in!

于 2013-07-11T17:13:18.910 回答