基础-OpenGL ES

1、四大着色器

顶点着色器:接收顶点数据,单独处理每个顶点

细分着色器:对所有的图像进行修改几何图元类型

几何着色器:决定输出的图元类型和个数

片元着色器:对光栅化处理生成的片元进行处理

2、渲染过程中产生的问题解决

(1)油画算法

先绘制场景中离观察者比较远的物体,再绘制较近物体。但是油画算法重复绘制,耗性能,一般不采用。而且,在一些情况下,采用油画算法是无法进行处理,例如:三个图形互相叠加的情况。

(2)正背面剔除法

绘制我们看到面。就像一个几何立体图形,我们最多能看到它的3个面,而我们只绘制看到的面,在渲染性能方面上,可提高超过50%,节约片元着色器的性能。

(3)Z-bufffer方法(深度测试)

在决定是否绘制一个物体表面时, 需要将表面对应的像素的深度值与当前深度缓冲区中的值进行比较,如果大于深度缓冲区中的值,则丢弃这部分。否则利用这个像素对应的深度值和颜色值,分别更新深度缓冲区和颜⾊色缓存区。(颜色缓存区:存储像素的颜色信息;深度缓冲区:存储像素的深度信息。深度缓冲区和颜色缓存区是对应的)

(4)Polygon Offset方式

由于深度缓冲区精度的限制对于深度相差非常小的情况下,OpenGL可能出现不能正确判断两者的深度值,会导致深度测试的结果不可预测。显示出来的现象时交错闪烁。而这时候,我们可以让深度值之间产生间隔,即,在进行深度测试之前,将立方体的深度值做细微的增加-Pplygon Offset。

(5)混合

OpenGL 渲染时会把颜色值存在颜色缓存区中,每个⽚段的深度值也放在深度缓冲区。当深度缓冲区被关闭时,新的颜色将简单的覆盖原来颜色缓存区存在的颜色值,当深度缓冲区再次打开时,新的颜色⽚段只是当它们比原来的值更接近邻近的裁剪平面才会替换原来的颜色⽚段。

 

你可能感兴趣的:(OpenGL,ES,iOS)