2012-12-09 110 views
0

我从3学期开始学习计算机科学,我们刚刚开始使用openGl 1.0。我们正在做非常基础(api背后的数学)。学习OpenGL 1

本讲座由4部分构成,共4学期。

现在我真的很想读一本书,而我听到这个讲座,但我不知道我应该阅读哪一本。

我应该得到一本关于opengl 1或opengl 3+的书吗?

或者我应该等到我们从opengl3开始,同时阅读一本关于数学的书,比如this

回答

3

用于学习3D图形的旧版OpenGL没有任何问题。 C编程语言已有40年历史,Lisp更多,但它们仍然相关。我认为至少使用OpenGL 1.3或者2.0/2.1是很重要的,因为像大多数软件一样,OpenGL 1.0有一些可怕的位,可以在后来的版本中快速修复。

借助OpenGL 1.x或2.x,您将了解3D图形的基础知识:多边形几何体,嵌套转换,灯光材质,纹理映射&。使用OpenGL 1或2比使用3或4更容易学习,因为OpenGL 1/2中有更多内置功能,并且有许多年的书籍和在线教程可用于指导。

要读的书:“红皮书”OpenGL编程指南,最好是较旧的第3版或第4版;或OpenGL SuperBible,再次是第二或第三版。你也可以查看优秀的NeHe网络教程 - 对于OpenGL 1/2,现在称为“传统教程”。对于3D图形背后的数学,我推荐Dunn & Parberry的3D数学入门图形和游戏开发。

OpenGL 1.x中没有的东西是现代GPU的着色器。一旦你掌握了基础知识,你可以从OpenGL 2中的顶点和片段着色器开始。一旦你熟悉这些,开始编程OpenGL 4.(我建议跳过3,直接进入OpenGL 4/DirectX 11.)

这是假设你想从上到下学习,从内置的API函数开始,这些函数为你完成大部分工作,并逐渐进入更多细节。相反,如果您希望深入探索OpenGL SuperBible第5版和采用OpenGL 4的现代GPU,这不是我喜欢的方法,因为恕我直言,OpenGL 3/4是“3D汇编语言”和学习曲线非常陡峭,但有些人更喜欢它。

希望这会有所帮助。

+0

是的,这是一个很大的区别。今天,所有实时图形都发生在可自由编程的GPU上。你无法真正将它与编程语言进行比较。或者实际上你可以。 C和40年前一样好,因为它是Turing Complete。带GLSL的OpenGL-3也是Turing Complete。但固定功能的OpenGL-1是*不*图灵完成。因为这是一个巨大的概念差异。着色器也是计算机图形领域的一个不可或缺的概念,但固定功能流水线GPU(如OpenGL-1.1)从未支持过;很多图形编码人员都因此嘲笑GPU。 – datenwolf

+0

另外我认为用着色器做这件事会让学习变得更容易。是的,还有更多的样板代码需要写入。但仅仅在幕后没有“魔术”的事实实际上增强了学习体验。在OpenGL-3中,固定函数OpenGL的许多新手陷阱(如在事件处理程序中设置投影的错误做法)根本就不存在。 glTexEnv的整个麻烦以及启用/禁用的纹理目标消失。 – datenwolf

+0

今天我购买了版本4.3的红皮书第8版(粗略切割)。我会同时读到我的演讲。 –

2

OpenGL-1.0 - 这是超过20岁的哇。或者你的意思是OpenGL-1.1,仍然超过15岁。无论如何,请告诉你的教授或助教在将来教有用的东西;你可能不在计算机图形学的人格学课程中。

你绝对应该学习OpenGL-3和更进一步。实际上,版本3确实引入了长期逾期的API清理,并且从长远来看,必须使用着色器才能使事情变得更加容易。

+0

我正在学习一些独特的东西,它是以计算机图形学为重点的计算机科学。我不完全确定我们使用的是哪个版本,但他告诉我们,我们从opengl开始。我们现在只使用过剩。所以学习opengl 3+也会帮助我理解opengl1?因为我仍然需要在opengl1/glut中编写我的考试。 –

+0

@MaikKlein:OpenGL-3与OpenGL-1非常不同。1;没有即时模式,没有内置矩阵堆栈,所有事情都是通过缓冲区对象发生的。所以学习OpenGL-3不会帮助你使用OpenGL-1。但就像我说的,今天给出的计算机图形学课程根本不应该使用OpenGL-1。 – datenwolf

+0

我想那时我们正在学习的流水线也是opengl 1.1呢? '对象坐标 - >模型视图矩阵 - >投影矩阵 - >透视分割 - >视口转换' –