OpenGL 3.X是否比跳过OpenGL 2.X更好学习?

12

OpenGL 3.x和2.x之间有很大的区别吗?学习OpenGL 2.x是浪费时间,还是两者都遵循相同的概念?我记得在某个地方读到过2.x是基于状态的,而3.x则不是,这正确吗?

6个回答

51

请注意,OpenGL 3已经废弃了许多函数,特别是早期OpenGL的函数。如果您使用过时的教程(比如大多数NeHe的教程),那么您很可能会习惯于使用过时的OpenGL 2的风格。

在OpenGL 3中没有固定的渲染管线(如果您不使用向后兼容功能)。您必须使用着色器程序。不再有glBegin/glEnd函数。您必须使用顶点缓冲区。这些功能在OpenGL 2中已经可用,但大多数教程仍使用glBegin/glEnd以及设置OpenGL颜色属性。这是一个非常重要的区别。

OpenGL 2提供了无数种方式来在屏幕上显示图像,每种方式都至少有一个流行的教程进行介绍。OpenGL 3放弃了其中许多功能,包括OpenGL 2的“初学者子集”(固定函数glBegin/glEnd)。因此,如果您长期目标是面向OpenGL 3,请从一开始就开始使用它。没有比被卡在死胡同更令人沮丧的事情了。


3
OpenGL 3没有删除任何东西。“弃用”意味着将来会删除它,而不是已经删除。只要使用完整的上下文,你担心的一切仍然存在。考虑到现有软件的使用情况,我严重怀疑驱动程序在很长一段时间内都不会放弃对固定功能管线的支持。 - Jay Kominek
12
在OpenGL 3中,它指的是整个3.x家族,并且最近发布的3.2实际上删除了已弃用的函数。请参见“OpenGL 3.2的新功能”,http://www.opengl.org/documentation/current_version/:“OpenGL 3.2和配套的OpenGL着色语言1.50添加了许多新功能,同时通过删除OpenGL 3.0中弃用的传统固定功能接口,简化了API和着色语言。” - Malte Clasen
谢谢Malte。这正是我担心的。即使还有一些东西,我也想学习最佳实践,而glBegin/End等内容似乎并不是最佳实践。那么,你知道在哪里可以找到任何不以过时内容为开端的OpenGL 3.x教程吗? - Per Arneng
抱歉,我不知道。不过我可以推荐 http://www.opengl.org/discussion_boards/ubbthreads.php 上的伟大OpenGL社区。也许初学者论坛中有些人更了解3.x学习资源。并始终保留官方规范的副本。虽然它不能替代教程,但它写得很好,在一些特殊情况下是无价的。 - Malte Clasen

11

它们几乎完全向后兼容,因此您学习早期版本时学到的任何内容都将可以很好地应用于后续版本。如果您需要在特定领域取得成功,则 2.0 可能是一个不错的选择。如果您查看OpenGL 维基百科页面,您可以了解各个版本添加了哪些功能,并自行决定哪些功能可能对您有用。


1
人们一直在给我投反对票,但我不在乎。我会坚持这个建议,特别是当还没有人提供GL 3特定资源时。你可以通过使用2.x来学习着色器,如果将几何图形传递到GL的方法是你任务中的一个小部分难度,那么我真希望我能代替你。 - Jay Kominek

4
我正在阅读《学习现代3D图形编程》,虽然我还没有硬件来使用OpenGL 3,但它帮助我理清概念,使得一旦有了可用的硬件,我应该能够放弃1.1风格并转向3。 http://www.arcsynthesis.org/gltut/

3
我认为现代着色器样式是OpenGL和实时3D图形的未来。我建议立即开始使用OpenGL 3。另一方面,旧式弃用的OpenGL更容易学习,更容易做简单的事情,而不必了解整个API。
但无论您是否跳过旧式固定功能,或者使用Direct3D或OpenGL,重要的是您也要理解图形管道的原理和内部工作,因为我经常(并非总是)看到有人对OpenGL有疑问,以及为什么他们的代码不起作用,他们似乎对计算机图形毫无概念,也不知道各个OpenGL函数的真正含义。
编辑:此外,请参考this question获取一些书籍推荐,具体取决于您的决定。

2

-7

了解有最多学习材料的内容。NeHe's tutorials 是一个好的起点。

几个月前我做过一些OpenGL的工作,虽然我不记得我当时使用的版本是什么,但我可以告诉你,最重要的是概念。特别是当你刚开始入门时,不需要处理着色器之类的东西。

(请参见Malte Clasen的答案。)


24
我认为这个建议很危险:不学习着色器会导致只学习已经被弃用的固定函数管线。你开始学习的子集在OpenGL 3中已经不再可用。 - Malte Clasen
2
我同意,自从Nehe教程以来,OpenGL已经发生了巨大的变化。如果你真的想利用硬件加速,那么你很可能会疯狂地想要使用OpenGL而不想学习更多易于使用的库,但是Nehe对你来说将没有什么用处。 - Kilon

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