OpenGL模板测试通俗理解

看书籍或资料往往还是云里雾里的,这里写一下自己的理解。希望对需要的人有帮助。

简而言之:

  1. 模板缓冲区和帧缓冲区一样大
  2. 模板缓冲区初始状态是什么?
    在glClearBuffer的时候清空,所以初始状态是全为0。
  3. 模板测试什么时候进行?
    每一次你调用绘制函数的时候都会进行模板测试。一次绘制后,像素着色器会输出像素,这个像素是否写入到颜色缓冲区,取决于模板测试。
    新像素的模板值:本次绘制产生的图像 ,根据每个像素是否有内容或是否被更新,都有一个模板值与之对应。凡是有像素点的地方,像素点的模板值为1;没有像素点的地方,模板值为0。
    像素的模板值和模板缓冲区对应位置的值进行一次运算,就叫模板测试,具体的运算规则可以通过glStencilFunc来配置。在配置的运算规则下,若通过,则像素会被写到颜色缓冲区中,即将被刷新到屏幕中;若不通过,则此像素会被直接丢弃,不会更新到屏幕中。
  4. 模板缓冲区什么时候被更新?
    模板缓冲区更新需要打开开关glEnable(GL_DEPTH_TEST)。
    模板测试完成后,进行模板缓冲区更新。
    更新操作具体怎样进行,和模板测试的结果有关,可以通过函数glStencilOp来配置,成功时写入什么,失败时写入什么。

最后说一句:
模板缓冲区就是一个过滤网,就是用来过滤像素的。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

撬动未来的支点

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

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

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

打赏作者

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

抵扣说明:

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

余额充值