刚进入学习OpenGL的阶段,先大致总结一下一些常用基本名词&概念吧~有不恰当的理解欢迎指出
渲染?
也叫绘制,是将图形、图像从数据转换成可视图像的操作,代码行间通常以render字样出现。
垂直同步,显示器刷新是逐行进行的,每一帧完整的刷新后发出的信号,称为垂直同步信号;利用两次信号之间的时间间隔进行缓冲区交换,称为垂直同步技术。
而把图像渲染上屏,初期运用的是双缓冲区的设计,以解决绘制过程中,图像显示不完整的问题;后期进行优化有了三缓冲区,其想法是等待垂直同步时,来回交替两个离屏的缓冲区,达到充分利用硬件性能的目的。
上下文context
类比OC里的CoreGraplhic使用场景,OpenGL在执行任何操作之前,需要先创建一个上下文环境。这个环境里包含了OpenGL提供给开发者可供修改的各种状态,是一个状态机池容器。
OpenGL的函数是面向过程的,通过对这些函数指令操作的封装,就成为了可供开发者直接调用的面向对象的图形API了。
可以通过创建不同的上下文,共用纹理、缓冲区等资源,并分发到不同线程去处理的方案,来解决切换上下文带来的巨大开销的问题。
状态机
例如glClearColor(1.0,1.0,1.0,1.0)的调用,就是一个通过接受开发者输入的参数,去记录一个颜色值的状态,并在稍后重绘的时候进行渲染。
顶点数组
包括图形所有顶点的坐标数据,存放在内存中,由GPU调用。而顶点缓冲区,则是为了提升顶点绘制的效率,由GPU在显存中开辟的一部分空间作为顶点数据缓存。
管线
指OpenGL在渲染过程中,经历的各个节点,汇聚成一个任务流水线,有制定好的执行顺序。
固定管线:早期OpenGL封装好不可改变的管线,只能实现预设好的场景。
可编程管线:在不改变整个执行顺序的前提下,OpenGL开放了两个模块可供编程,分别是顶点着色器、片元着色器。
顶点着色器vertexShader:处理图形的顶点,根据顶点数量来决定调用次数。
片元着色器fragmentShader:为每一个像素点计算和填充颜色。
光栅化
把顶点数据圈定的区域,转换成可供渲染的片元,以及片元里的每一个像素点。
纹理
就是像素级的图片,渲染的时候作为纹理贴上去
混合Blending
如果通过了隐藏面剔除等操作后,像素依然存留需要渲染,会跟帧缓冲区中的颜色进行混合,混合算法由OpenGL提供。
变换矩阵Transformation
图形发生位移、旋转等变化时,用的容器载体
投影矩阵Projection
把3D坐标转换为2D的容器载体