OpenGL超级宝典(第7版)笔记11 帧缓存运算 计算着色器 清单 3.13

OpenGL超级宝典(第7版)笔记11 帧缓存运算 计算着色器 清单 3.13


上一篇介绍了一下有关片段着色器的相关内容(虽然还有未解决的问题),这一篇我们将介绍图形管线的最后一部分,帧缓存运算,还介绍一下一个单独形成管线的着色器:计算着色器。

1 帧缓存运算

帧缓存是OpenGL管线的最后一个阶段,我们可以把渲染的图像传输给窗口的帧缓存中去,这样我们就能看到绘制的图形了,如果我们需要渲染到屏幕以外的地方(以后的有些计算需要我们这样做),那我们就要提供自己的缓存。

当然在这个环节中,即在写入窗口前我们还要进行很多的筛选和计算,主要是分为4步:裁剪测试,模板测试,深度测试,混合和逻辑运算阶段。

1.1 裁剪测试

我们可以通过设置一个矩形,当像素在矩形外的话,我们就把这些像素丢弃,如果像素在矩形内,那么它的值将会继续进行之后的运算。

1.2 模板测试

这一步的时候我们将比较我们设置的参照值和模板缓存之间的大小。

1.3 深度测试

这是一个非常重要的环节,还记得之前我们在剔除中进行的计算吗,通过计算三角形的正反(向量叉积)来剔除一些不用绘制的三角形。但是我们无法解决前面的三角形挡住了后面三角形的正面这种情况,当时我们提到要用深度测试,而这里就要进行深度测试。

深度测试就是在绘制三角形的像素时判断一下,该三角形在该像素上的深度(Z值)是多少,如果比缓存中的小,那么将该像素的信息覆盖在上面。

比如说我先画一个三角形:
这里标出了每个像素对应的深度图
在这里插入图片描述
观察到第一个绘制的三角形是位于Z=0.5平面上的,所以每个像素的深度值现在是0.5(在三角形区域中的像素)。
在这里插入图片描述
在绘制第二个三角形时,运行到深度测试的时候,在重叠部分,蓝色的三角形的深度是小于红色的,所以在重叠的区域红色的三角形被蓝色三角形覆盖。虽然显示的是蓝色完全盖住了重叠的区域,但深度测试是逐像素进行的,因为重叠区域蓝色

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值