跳过OpenGL 2.X并开始学习OpenGL 3.X更好吗?

Per*_*eng 10 c opengl 3d

OpenGL 3.x与2.x之间存在巨大差异吗?学习OpenGL 2.x是浪费时间还是他们都遵循相同的概念?我想我读到的地方2.x是基于状态的而且3.x不是,这是正确的吗?

Mal*_*sen 48

小心.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,请从一开始就进行操作.没有什么比陷入死胡同更令人失望的了.

  • 对于OpenGL 3,意味着整个3.x系列,而最近发布的3.2实际上删除了已弃用的功能.请参阅"OpenGL 3.2中的新功能",http://www.opengl.org/documentation/current_version/:"OpenGL 3.2和配套的OpenGL着色语言1.50添加了许多新功能,同时通过删除旧版本来简化API和着色语言OpenGL 3.0中不推荐使用固定功能接口." (11认同)
  • OpenGL 3不会丢弃任何东西.弃用意味着它将来会被删除,而不是被删除.只要一个人使用完整的语境,你所担心的一切仍然存在.我非常怀疑驱动程序会在很长一段时间内停止对固定功能管道的支持,考虑到现有软件使用它的程度. (3认同)

Jay*_*nek 10

它们几乎完全向后兼容,因此您使用旧版本学习的任何内容都将适用于更高版本.如果你必须特别"瞄准"某个地方,2.0可能是一个不错的选择.如果您查看OpenGL维基百科页面,您可以看到添加到各种版本的内容,并自行决定您认为您需要哪些功能.


And*_*ton -7

学习有关该领域的学习材料最多的内容。NeHe 的教程是一个很好的起点。

几个月前我做了一些 OpenGL 工作,虽然我不记得我编程的版本,但我可以告诉你,概念是最重要的。当您刚刚开始并且不处理着色器之类的东西时尤其如此。

(参见马尔特·克拉森的回答。)

  • 我认为这个建议很危险:不处理着色器会导致学习已弃用的固定功能管道。您显然开始使用的子集在 OpenGL 3 中不再可用。 (24认同)
  • 我同意,自从 Nehe 教程以来 OpenGL 已经发生了巨大的变化。如果你真的想利用硬件加速,很可能你会疯狂地想要使用 OpenGL 并且不想这样做,因为有很多更简单的库可供学习,Nehe 对你来说没什么用处。 (2认同)