参考了维基百科
OpenGL:Open Graphis Library,是用于渲染2D、3D矢量图形的跨语言、跨平台的API。
OpenGL ES:OpenGL For Embedded Systems,是OpenGL的子集,针对手机、PAD和游戏主机等嵌入式设备而设计。
DirectX:由微软公司创建的一系列专为多媒体以及游戏开发的API。
Metal:Apple推出的一个兼顾图形与计算功能的,面向低层、低开销的硬件加速API。类似于将OpenGL和OpenCL的功能集成到了同一API上。
OpenCL:最初由Apple开发的为异构平台编写程序的框架,OpenCL扩展了GPU图形生成之外的能力。
上下文(context): 一个非常庞大的状态机,里面是对于OpenGL各种状态的描述与记录。OpenGL指令执行需要有上下文环境,执行指令即修改上下文中各种状态。切换上下文需要消耗比较大的资源。
渲染:是将模型数据转换成图像数据的过程,将图形/图像数据转成2D空间图像操作叫做渲染。
顶点数组:顶点位置数据存储在内存中即顶点数组。
顶点缓冲区:为了更加高效,将顶点数组拷贝到显存中,即顶点缓冲区。
着色器:在CPU中执行的代码段可以叫做函数/方法
,在GPU中执行的代码段可以叫做着色器(Shader)
。
管线:OpenGL在处理渲染图形处理数据时,是严格按照一定顺序进行的,把这一系列处理数据的流程理解为管线。
固定管线(存储着色器):类比苹果提供给开发者已经封装好的API,固定管线(存储着色器)就是由OpenGL封装好的API,开发者只需要传递参数调用即可。
自定义着色器:由于部分场景固定管线无法满足,OpenGL开放了部分着色器(一般指下面的顶点着色器
和片元着色器
)可以编程,也就是基于GLSL
语法来编写的代码段。
GPU渲染流程
顶点着色器:处理顶点相关。
作用有:
- 确定位置
- 缩放/平移/旋转的位置换算
- 3D图形数据转换为2D数据(投影换算)
片元着色器:片元即像素点,所以也叫像素着色器,处理一个个像素点,如120*120像素点,片元着色器需要执行14400次。如针对一张图片的饱和度调整,则需要片元着色器对每个像素点进行修改。
光栅化:将顶点数据转换为片元的过程。片元中的每一个元素对应帧缓冲区的一个像素。包括2个部分工作,且不可编程,只需要有认知就好。
- 确定图形在像素范围内。
- 分配一个颜色值和深度值到片元的每个元素。
纹理:即比如png和jpeg解压缩后产生的位图。
混合:如多个Layer图层进行叠加,不同颜色值和透明度需要进行颜色的混合计算。
变换矩阵:图形发生平移/旋转/缩放需要使用变换矩阵。
投影矩阵:3D图形转为2D坐标需要使用投影矩阵。
投影方式:有且只有两种,正投影(平行投影)/透视投影。
坐标系:
- 物体坐标系
- 世界坐标系
- 观察者坐标系
- 规范化设备坐标系
- 屏幕坐标系
网友评论