0. 说明
写本文的初衷是能够更好的让自己理解,同时便于日后查询,对有相同需求且过去完全没有接触过OpenGL的开发者来说,也许能提供一定的帮助。
目前学习OpenGL也许是最好的教程是来自Joey de Vries的LearnOpenGL,很幸运,该文章也有对应的中文版LearnOpenGL CN。因此文章绝大部分文字教程来自翻译Joey de Vries的LearnOpenGL CN,由于原文已经相当出色,并不需要过多修改(当然也没有那个水平),我仅根据原文增减成适合Qt开发的教程,读者也可以自行查看原文或翻译好的中文版。
如果查看目录,可以点击这里。
1. 简介
学习计算机图形的工作原理,可以自己做一些很酷、很有趣的东西,然而,在开始学习OpenGL之前,有这么几点注意事项。
1.1 前置知识
由于OpenGL是一个图形API,并不是一个独立的平台,它需要一个编程语言来工作,在这里我们使用的是C++,因为Qt多数情况下我们使用的仍是C++。所以,对C++的熟练掌握在学习这个教程中是必不可少的。
除此之外,我们也将用到一些数学知识(线性代数、几何、三角学),同样我也会尝试解释所有的必备的数学概念。不要被必须的数学知识吓到了,几乎所有的概念只要有基础的数学背景都可以理解。我也会将数学的内容压缩至极限。大部分的功能甚至都不需要你理解所有的数学知识,只要你会使用就行。
1.2 结构
LearnOpenGL被分解成了许多大的主题。我是遵照原LearnOpenGL进行划分的,对每个主题的每个小节按照Qt适配编写,所有主题原文可以在LearnOpenGL上找到,当然也有对应的中文版LearnOpenGL CN。这些主题是按照线性来学习的(所以建议从上到下来读,除非有特殊指示),每个页面将会解释每个概念的背景理论和实际操作。
为了让教程更容易理解,结构更鲜明,我将沿用原OpenGL方框和代码块标注模式。
方框
绿色方框是一些注释或者是对于OpenGL或讨论主题有用的特性/提示。 |
红色方框是一些警告或者一些你需要特别注意的特性。 |
译注 |
蓝色方框是翻译时为了帮助读者理解附加的一些信息。 |
黄色方框是个人解读或总结,便于读者理解记忆。 |
代码
你将会看到很多小片的代码,它们将会在下面这样的代码框中:
// 这个方框是代码
由于这样只提供了代码的片段,无法独立运行,还需要将其补充为完整的工程源代码。
颜色标记
这里我并未打破原有教程中的标记规则,原因有两点:其一是因为我仍会大量使用原文的内容,并且可能不会有太大变动,直接继承原文中的标记规则可以最大程度保持原文的原汁原味;其二也是方便有些读者在阅读时候可以和原文进行参照对比。
原文标记规则如下:
- 定义:绿色的字是定义,即一个重要的概念或名称,这些词语你能经常见到。
- 程序逻辑:红色的字是函数的名称或者是类名。
- 变量:蓝色的字是变量,包括所有的OpenGL常量。
那么,现在可以正式开始你的OpenGL学习了。