嗨,我是一名学生,整个夏天我借用了OpenGL编程指南,版本4.3,这是我的大学似乎在主库中唯一的版本。
我已经对使用OpenGL与SFML,SDL和过剩有一点了解。我借了这本书来帮助我扩展我的知识。
不幸的是,我发现4.3这本书非常重,难以理解。我确信我读过一本类似的书(旧版本,曾经被称为“红皮书”)并且发现它更容易理解。
我能够借用2.1版本书,我很确定这是我读过的那本书。到目前为止,我发现很多更容易遵循。它肯定更适合非专家和经验不足的人。
这可能是一种接收不良的问题,并被投票结束,但请不要这样做 - 我想回答我的问题。我认为这是一个编程问题,对我这样的人有帮助。正如我稍后解释的那样,我希望购买第2版或第2.1版的书,并希望得到一些建议。
基本上我想知道OpenGL Version 2和Version 2.1之间的主要区别。据我所知,有一本关于版本1.0或类似的书,然后是2.0,2.1,然后是3或3.5或者其他什么。为什么版本增量为0.1时,全新书:从版本2.0到2.1。我假设在2.1版本中添加了一些重大更改或添加了扩展和功能?
询问的原因是我非常喜欢这本书(2.1版),我想我应该买它! (疯狂,不是吗?)无论如何,我想知道版本2.1中有什么额外的东西,或者已经改变了什么,所以我可以决定是否花费额外的东西是值得的。
答案 0 :(得分:8)
这可能不是你所希望的答案,但是:不要费心学习OGL< 3.0。所有OpenGL都有详细记录,您需要知道的一切都可以在互联网上找到。另请注意,红皮书在互联网上完全免费,至少是相关部分(据我所知)。无论如何,它主要关注旧的,已弃用的功能,我认为不再值得阅读了。
OpenGL 3.0引入了弃用机制,因此大多数OpenGL 2.x功能都已弃用。这包括客户端内存,固定管道,内置照明计算等.OpenGL 2.x确实包括可编程管道功能和服务器端缓冲区,但我仍然强烈建议使用现代OGL。仅仅因为你不够谨慎。 OpenGL 2.x邀请您使用较旧的功能,因为它非常易于使用,但可能是重罪。
可编程管道,服务器端缓冲区以及OpenGL 3.x及以上的所有商品可能很难学习。但是一旦你能够熟练地使用这些功能,你就会被它的力量所震撼。在你的评论中你提到了粒子,如果你能够使用变换反馈,计算着色器,几何着色器,实例化渲染等,那么实验粒子会更有趣。事实上,现代OpenGL非常适用于旧的OpenGL,它更快,更快,专为现代硬件而设计。
我不知道为什么每个小版本都有一本新书,人们对我认为的书籍上瘾。但OpenGL 3.x及以上确实值得一本新书。它与以前的API完全不同 - 至少它的用法是。现在我个人不喜欢书,但那只是我。了解OpenGL 3.x及其在互联网上的一个很好的起点是:
http://www.arcsynthesis.org/gltut/index.html
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),这包括几何着色器,tesselation等类似的东西。
最后一点,OpenGL ES 2.0+更容易转换为更新的OpenGL版本。 OpenGL ES 2.0+不使用固定管道,也不使用客户端内存等。并且类似的API在网络上运行,即使网络已经移动,所以你应该:P
现在走出去,开始OGL'in!