OpenGL模板测试通俗理解

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

简而言之:

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

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

posted @   撬动未来的支点  阅读(264)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示