OpenGL是一个3D图形绘制库,相较于一般的2D图形,在高(长)宽的概念上引入了深度的概念,也即是在2D效果上加一个维度用来模拟3D效果
光栅化:图片从内存绘制到每个像素点的过程,也就是实际的图片绘制过程,图片实际只是一串数据
着色:字面意思,每个像素点都是一种单一的颜色,通过多种单一颜色来构成一个照片,这个就是着色
纹理贴图:即是图片,只是和图片处理方式不同,在3D里面纹理会使图片3D空间更明显
混合:就是颜色的混合,虽然所有颜色最终都是黑色,但不同的配合会产生不同的颜色,也不是一混合就黑了
坐标系不赘述了2D(x,y) 3D(x,y,z)
OpenGL的填充只有点,线和三角形
线框渲染:用线框渲染
纯色渲染:用颜色渲染
纹理渲染:用图片渲染
CPU是串行运算,GPU是并行运算,在绘图来说GPU要比CPU快的不是一丢丢,苹果的GPU有很多运算单元,外加根据自己的GPU定制的渲染库,所以苹果配置低安卓一倍也跑动画贼鸡儿快
OpenGL常用的场景是PC端,OpenGL ES常用的场景是嵌入式端,包括手机端Pad端,带安卓系统的电视机,和一些嵌入式的板子
OpenGL是跨平台的,GPU是有很多厂家的,这些工艺,调用,以及各种适配都是不一样的,必须有一个框架进行协调,不可能针对每个GPU都写一套代码
OpenGL的主要渲染流程是使用的着色器
着色器又可以细分成顶点着色器(必选),细分着色器(可选),几何着色器(可选),片元着色器(必选)其区别是:(?????)
着色器的渲染流程:因为之前说过OpenGL的渲染单元是点先和三角形,这三个都有顶点,比如线就是两条,点一个,三角形则是三个顶点,这个叫做顶点数据
1.就是把顶点数据传输给顶点着色器,然后让顶点着色器去分别计算每个顶点的内容
2.接着去细分着色器描述下渲染形状,或者修改几何形状,或者放弃凸绿等等,一般是用不着的
3.图元设置,就是图片长啥样
4.剪切,一般图片过大或者什么的时候会需要剪切,剪切掉视窗外的内容,所以写程序尽量不要离屏渲染,会很影响效率
5.光栅化,根据顶点数据和剪切,以及各种化为没着色的片元
6.片元着色器,对每一个片元进行染色,然后形成最终过程
管线:一个上述基本的渲染流程就是一条管线
可编程管线:高度可定制化的管线
固定管线:不可定制化的管线