我想学习OpenGL。我有C和C++的经验,建立了一个构建环境,以及所有的爵士乐,但我试图找出一个好的起点。OpenGL的核心和兼容性
我知道在OpenGL < = 2.1中显着的固定功能流水线,并且它似乎比较容易开始使用。但是,OpenGL在OpenGL> = 3.1中推动的核心配置文件让我想要因为弃用而远离FFP。但是我很困惑它是如何在3.1及更高版本中工作的。在2.1和更低版本中,当你绘制形状时,你有你的glBegin(GL_WHATEVER)和glEnd()。我在浏览核心配置文件API时注意到的第一件事是,这两个函数调用都没有了。我意识到可能有一个简单的替代方案,但看到这样一个基本任务(看起来很有用)的东西是非常令人震惊的。它几乎看起来像从c标准库中废弃printf()。当我通过最新的红皮书工作时,他们仍然使用旧的弃用代码,这进一步混淆了我的想法。
在阅读类似问题的各种答案时,我看到了典型的“基于着色器”或“它全部用着色器”等。如果我想在黑色背景上绘制一个简单的白色正方形(第一个示例最新的红皮书),我不明白着色器如何与绘制盒子相关。他们不应该......好吗..底纹?我已经考虑过购买橙皮书和蓝皮书,但我不想再花钱购买那些将它藏在图书馆后面的东西(蓝皮书),或者将讨论编程着色器的东西在3D环境(橙皮书)中执行一些照明任务。
那么我从哪里开始呢?我怎么画一个盒子(或一个立方体或一个金字塔或其他什么),只用核心配置文件。我不是在这里要求一个代码片段,我正在寻找一个广泛的教程或一本书或某人可以指向我的东西。如果之前已经回答了这个问题,但我没有找到它,请重定向我。
我建议你在现代OpenGL上选择一本好书。我的第一个建议是http://www.arcsynthesis.org/gltut/,它在线和免费。这应该让你开始。 – Bart
您也可以在2.0中使用可编程管道。无论版本如何,固定功能都很糟糕,效率低下。 –
@CatPlusPlus这是我第一次听说有人将固定功能管道称为效率低下。 :)你可能想重新考虑这个词。蹩脚 - 我同意。 – Ani