OpenGL(一)
OpenGL一般认为是一个API,包含了一系列可以操作图形、图像的函数,但是实际上仅仅是一个规范,OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值。具体里面每个函数的实现由库的开发者去实现,这里的开发者主演是显卡厂商。函数的实现细节并没有规定,只要最后与函数的功能相匹配就可以。简单的说就是OpenGL制定函数,由显卡厂商实现函数。
早期的OpenGL使用立即渲染模式,也就是固定渲染管线,此模式下绘图方便,但是缺乏灵活性,效率还低,于是在OpenGL3.2开始,规范废弃了立即渲染模式,并鼓励使用核心模式下开发。
OpenGL可以描述为一个巨大的状态机(state machine):通过一系列的变量描述来告诉OpenGL当前改如何运行。OpenGL状态通常被称为OpenGL上下文(Context)。通常通过以下方式来更改状态:设置选项、操作缓冲,最后使用当前OpenGL上下文来渲染。
OpenGL库是C语言写的,同时也支持多种语言的派生,但其内核仍是一个C库。由于C的一些语言结构不易被翻译到其它的高级语言,因此OpenGL开发的时候引入了一些抽象层。“对象(Object)”就是其中一个。
在OpenGL中一个对象是指一些选项的集合,它代表OpenGL状态的一个子集。比如,我们可以用一个对象来代表绘图窗口的设置,之后我们就可以设置它的大小、支持的颜色位数等等。可以把对象看做一个C风格的结构体(Struct):
struct object_name { float option1; int option2; char[] name; };
来自于此网站https://learnopengl-cn.github.io/01%20Getting%20started/01%20OpenGL/