前言
对于C++和OpenGL的学习是同时进行的,因为我觉得相较于简单的编程练习,OpenGL本身就是对于C++的非常好的实践,能够有助于我们进一步理解C++的语言特性。作为OpenGL系列的第一篇文章,本文将会帮助大家建立起对于OpenGL的初步印象。
什么是OpenGL
在我们学习一个东西之前我们第一个疑问就是它是什么?那么什么是OpenGL呢?一些人认为OpenGL是一系列跨平台的操作图像的API,其实这个定义并不准确,准确来说OpenGL是由www.khronos.org 提出并维护的与平台无关的操作图像的规范,OpenGL规范严格规定了每个函数的结果和输出以及运行过程,但是却不包含具体的实现细节,我们熟知的OpenGL库则是基于OpenGL规范的实现,其中包含了大量的操作图像的API。OpenGL库一般是由显卡制造商开发并维护的,例如Apple平台的OpenGL库就是他们自己开发维护的。
基本概念
核心模式vs立即渲染模式
在早期OpenGL采用的是立即渲染模式(Immediate mode,也就是固定管线),在这种模式下能够非常容易的使用提供的方法渲染图像,很多实现的细节隐藏在是OpenGL库的内部,开发者无法控制OpenGL的计算过程。这种模式易于理解和使用但是灵活性差。为了提供更加灵活和有效的开发模式,OpenGL规范提供了核心模式,这是OpenGL规范的一个分水岭,在核心模式中,OpenGL更加关注一些现代化的实践,并移除了所有废弃的功能,如果使用废弃的函数将会引发错误并停止绘制。这种现代化的实践需要开发者