OpenGL实际上并不是把图像直接绘制在屏幕上,而是渲染到一个帧缓冲区,然后需要由计算机来负责把帧缓冲区的内容绘制到屏幕上的一个窗口中。有不少库都支持这一部分工作。GLFW库是最流行的选择之一。
OpenGL自身是一个巨大的状态机(State Machine):OpenGL的状态通常被称为OpenGL上下文(Context)。我们通常使用如下途径去更改OpenGL状态:设置选项,操作缓冲。最后,我们使用当前OpenGL上下文来渲染。
假设当我们想告诉OpenGL去画线段而不是三角形的时候,我们通过改变一些上下文变量来改变OpenGL状态,从而告诉OpenGL如何去绘图。一旦我们改变了OpenGL的状态为绘制线段,下一个绘制命令就会画出线段而不是三角形。
只要你记住OpenGL本质上是个大状态机,就能更容易理解它的大部分特性。
在管线中,将3D场景转换成2D图形的过程被分割成许多步骤;下面展示了OpenGL图形管线简化后的概念:
其中浅蓝色背景部分可以用GLSL进行编程,将GLES程序载入这些着色器阶段也是C++/OpenGL程序的责任之一,其过程如下:
(1)使用C++获取GLES着色器代码;
(2)创建GL着色器对象并将GLES着色器代码加载进着色器对象;
(3)使用GL命令编译并连接着色器对象,并将它们安装进GPU。
原文:https://www.cnblogs.com/haosk/p/14887479.html