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

简而言之:

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

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

OpenGL模板测试通俗理解相关推荐

  1. opengl模板测试实例

    在opengl中, 可以开启模板测试功能,来限定某一部分是可画的,某一部分是不可画的.这可通过设置模板模式来控制哪部分是可画的, 有点类似在墙上喷字. 虽说剪刀测试也可以限定蓝屏的某一部分可画,但不适 ...

  2. opengl 模板测试 glStencilOp glStencilFunc

    下面来设置蒙板缓存和蒙板测试. 首先我们启用蒙板测试,这样就可以修改蒙板缓存中的值. 下面我们来解释蒙板测试函数的含义: 当你使用glEnable(GL_STENCIL_TEST)启用蒙板测试之后,蒙 ...

  3. (zt)OpenGL中的Alpha测试,深度测试,模板测试,裁减测试

    转自http://www.cppblog.com/flashboy/archive/2009/09/01/94974.html 大家好.现在因为参加工作的关系,又是长时间没有更新.趁着国庆的空闲,总算 ...

  4. OpenGL基础30:模板测试

    前置:OpenGL基础29:深度测试 一.模板测试 前面一章提到过:深度缓冲测试在片段着色器运行.以及模板测试(Stencil Testing)之后,那么这下知道模板测试是在什么时候了吧,模板测试和深 ...

  5. OpenGL stencil test模板测试的实例

    OpenGL stencil test模板测试 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <glad/glad.h> #incl ...

  6. OpenGL学习笔记(七)-深度测试-模板测试-混合

    参考网址:LearnOpenGL 中文版 第四章 高级OpenGL 4.1 深度测试 4.1.1 深度缓冲 1.深度缓冲用来防止被阻挡的面渲染到其它面的前面,由窗口系统自动创建,在每个片段中储存了它的 ...

  7. OpenGL学习二十九:模板缓冲区与模板测试

    帧缓冲区有许多缓冲区构成,这些缓冲区大致分为: 颜色缓冲区:用于绘图的缓冲区,它包含了颜色索引或者RGBA颜色数据. 深度缓冲区:存储每个像素的深度值,当启动深度测试时,片段像素深度值和深度缓冲区深度 ...

  8. Opengl-深度测试模板测试

    ###深度测试 深度缓冲:用来存储深度信息的,可以这么理解,在你屏幕上最后留下的裁剪区域你看到的东西其实是有深度的,就像现实世界里一样,有远近这样.然后这个远近的程度信息就存储在了深度缓冲里 深度测试 ...

  9. bilateral filter双边滤波器的通俗理解

    bilateral filter双边滤波器的通俗理解 图像去噪的方法很多,如中值滤波,高斯滤波,维纳滤波等等.但这些降噪方法容易模糊图片的边缘细节,对于高频细节的保护效果并不明显.相比较而言,bila ...

最新文章

  1. 一. 对spring boot认识
  2. eNSP中玩转Python自动化——解锁网工新姿势
  3. hibernate mysql 映射_Hibernate怎么不用配置mapping就使用数据库表映射实体
  4. java五种加密技术理解
  5. 如何为我们的应用程序提供一个更小、更快的视频通话库
  6. linux下的各种shell介绍(bash和dash转换)
  7. 低功耗无线模块超远距离无线传输实现中继的方法
  8. 信息学奥赛一本通C++语言——1028:字符菱形
  9. 【Flink】Flink Max 和 MaxBy的区别
  10. matlab进行特征缩放,机器学习中(Feature Scaling)特征缩放处理的matlab实现方式
  11. Python匹配年月日和年月
  12. /usr/include/glib-2.0/glib/gtypes.h:32:10: fatal error: glibconfig.h: No such file or directory
  13. python批量查询ip归属地_python 实现批量查询ip的归属城市
  14. Excel中不复制隐藏行
  15. html 悬浮qq,js悬浮QQ在线客服代码(支持拖动)
  16. ESD笔记(三)_常用ESD保护电路优缺点
  17. 英文名为什么最好不用joe?JOE英文名的寓意是什么?
  18. Matlab学习报告 20-12-08
  19. 国内10个最佳PS教程网站
  20. How Broswer Work

热门文章

  1. Tomcat应用中post方式传参数长度限制
  2. 数据访问......单条件查询与多条件查询
  3. C++编绎器编绎C语言的问题
  4. VB6:通过ADO访问Oracle存储过程返回的结果集
  5. 服务器重装后怎么装系统,服务器如何安装系统,小编教你如何安装
  6. keeplive linux平台下,Linux下搭建keepalive+nginx
  7. router锚点和html锚点,hash模式下Vue-router页面返回锚点(scroll behavior)实现
  8. Codeforces Round #735 (Div. 2)(A-D)没有B
  9. ftp 服务器 文件 连接 导出,ftp 服务器 文件 连接 导出
  10. opendrive匝道