2009-08-15 71 views

回答

-7

了解任何有关它的最多学习材料。 NeHe's tutorials是一个很好的开始。

几个月前,我做了一些OpenGL工作,尽管我不记得我编程的版本,但我可以告诉你,这是最重要的概念。当你刚刚开始并且不处理着色器和其他事情时尤其如此。

(见马尔特Clasen的答案。)

+24

我认为这个建议危险:未与着色效果处理在学习过时的固定功能管道。你显然开始使用的子集在OpenGL 3中不再可用。 – 2009-08-16 12:39:26

+1

我同意,自从Nehe教程以来,OpenGL发生了很大的变化。如果你真的想要利用硬件加速技术,很可能你会想要使用OpenGL而不想这么做,因为有更多简单的库可以学习,Nehe对你来说没有什么用处。 – Kilon 2012-02-07 10:14:35

8

他们几乎完全向后兼容,因此可以随心所欲地用旧版本的学习是要应用到以后的版本就好了。如果你必须在某个地方“瞄准”,2.0可能是一个不错的选择。如果你看看the OpenGL Wikipedia page,你可以看到各种版本添加了什么,并为你自己决定你认为你需要哪些功能。

+0

男人,不停地给我投票。把它吸起来。我会支持这一建议,特别是在没有任何人提供GL 3特定资源的情况下。你可以学习使用2.x的着色器,并且如果将几何图形提供给GL的方法即使是任务难度的一小部分,我也希望自己处于你的鞋子中。 – 2010-07-12 16:32:45

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,从一开始就要去做。除了陷入死胡同外,没有什么比这更激烈的了。

+3

OpenGL 3不会丢弃任何东西。弃用意味着将来它会被抛弃,而不是被抛弃。只要一个人使用完整的环境,你所担心的一切仍然存在。 我很怀疑驱动程序会在很长一段时间内放弃对固定功能管道的支持,考虑到现有软件使用它的程度。 – 2009-08-16 16:39:32

+11

对于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中不推荐使用固定功能的接口。“ – 2009-08-16 19:56:06

+0

Thanx Malte 这就是我所担心的。即使有什么东西仍然存在,我想要学习最好的做事方式,而glBegin/End东西似乎不是那样。所以,你知道在哪里可以找到任何不以未被认可的东西开始的opengl 3.x教程吗? – 2009-08-17 16:41:23

4

我正在阅读“学习现代3D图形编程”,虽然我没有硬件来实际使用OpenGL 3,但它帮助我理解概念,使我能够沟通1.1风格,并且一旦我有硬件可以使用就移动到3。

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

2

我觉得现代的着色器只有风格是OpenGL的未来和实时3D图形。我建议立即从OpenGL 3开始。另一方面,旧式的OpenGL更容易学习,并且在不理解整个API的情况下做简单的事情会更容易。

但是,无论您是否跳过旧式固定功能或者如果您使用Direct3D或OpenGL,重要的是您还要了解图形管道的原理和内部工作原理,因为我经常(并非总是)看到有人对OpenGL有疑问,为什么他们的代码无法工作,他们似乎对计算机图形学以及各自的OpenGL函数的真正意义和作用并不了解。

编辑:另外,看看this question一些书的建议,根据你的决定。