android openGL ES详解——渲染管线流程图

一、流程介绍

顶点着色器-->光栅化-->片段着色器-->alpha测试-->模版测试-->深度测试
->Blend-->Gbuffer-->FrontBuffer-->framebuffer-->显示器

1、顶点着色器

1.计算顶点的颜色;

2.将物体坐标系转换到相机坐标系

2、光栅化

将顶点转换成像素,- 一对应
比如Unity渲染一个Quad物体,如下Quad有四个顶点

假设Quad像素为100*100

3、片段着色器

1.此时顶点已经是像素点(像素:一般有RGBA4通道组成 RGBA 8888表示每个通道占8bit ,32位刚好用fioat)比如 屏幕 1080*1920 横有 1080个像素,竖有1920个像素,float[1080*1920]

Quad有4个顶点到了 片段着色器 就变成了 100*100(即顶点着色器运行4次,片段着色器运行10000次)顶点着色器 与片段着色器运算次数不是一个量级的,所以能把运算放在顶点着色器里就尽量放在里面。

片段着色器主要做些什么呢?
1.纹理采样 即给Quad赋予贴图或材质球,把纹理像素付给原来的像素,把原来的像素覆盖掉了

————>

2. 像素跟灯光进行计算。

4、alpha测试

挑选合格的alpha像素显示。(RGBA)

5、模版测试

像素还可以携带“模板信息”达到条件的模板值会显示出来。

6、深度测试

符合条件的(一般是像素距离相机的距离)像素 就通过,不然就丢弃。

以上三个测试 决定像素能否被显示出来,挑选合格的像素。

7、混合Blend

将当前要渲染的像素和已经渲染出来的像素混合运算。

8、GBuffer

一个像素 存的(RGBA 模板值  深度值 )等信息,只要是审核通过了以后

Gbuffer做的中转把这些信息传给FrontBuffer ,(Buffer其实是缓存区)Float[720*1280*4]数组存的信息比较多。

9、Front Buffer

由Gbuffer往Front Buffer写完以后,Front Buffer推向显示器显示过程中,Front Buffer此刻就变成了FrameBuffer,同时由Gbuffer往Front Buffer写完以后,FrameBuffer会交换到后面去变成Front Buffer   Float[720*1280]缓存区

10、FrameBuffer

Float[720*1280]缓存区

其实 Front Buffer和FrameBuffer在交替显示,一帧帧的看着好像在动一样,所以两个是相对的。

二、渲染管线流程图

下面,你会看到一个图形渲染管线的每个阶段的抽象展示。要注意蓝色部分代表的是我们可以注入自定义的着色器的部分。

图一

图二

图三

图四

图五

图六

图七

图八

图九

推荐文章

Android openGL渲染rgba数组 opengl渲染顺序_大猩猩的技术博客_51CTO博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闲暇部落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值