zoukankan      html  css  js  c++  java
  • 模板测试

    模板测试(stencil test)应该说是对于深度测试的另外一种补充,锦上添花类型的。可以拿来实现一些效果:比方说RTS游戏中选中人物的时候,人物外围有一层光圈(表明被选中)。


    和深度测试一样,模板测试有模板缓冲(stencil buffer),由GLFW自动创建(别的库的话当然要看文档,看有没有自动创建)。

    当fragment shader处理完了一个片段之后,便会启动模板测试,它可能会丢弃片段,之后再启动深度测试(当然也可能会丢弃大量片段啦)。

    详细的细节就不讲了(毕竟learn opengl里面都有)。

    粗略地讲一下“光圈”实现的本质(直接引用learn openglcn 下面人的评论啦,我就不写了):

    代码上其实就是画了两个图形。一般情况下,两个图形都会画出来(当然深度测试会挡住一部分)。
    现在加入了模板测试,那么第一个画的图形的模板值全替换为1(关键操作GL_REPLACE 和 开启缓冲输入)。
    第二个图形,放大一点点,换个单色的着色器,那么一般情况下,会有有一个大一圈的单色模型挡住了第一个图形(深度测试的锅)。
    哪怕关了深度测试,图形依然是一片绿的(后绘制的覆盖前绘制的)。
    现在利用第一个图形那部分模板值全是1的特点,运用函数设置为当模板值不等于1时,第二个图形进行绘制。那么效果就是,第一个图形正常绘制,第二个图形仅有比第一个图形大的那部分绘制出来,所以看上去就是多了一个边缘。

    参考:

    [1]模板测试

    原来人类的悲欢并不相通, 我只觉得他们吵闹。
  • 相关阅读:
    google PR值突然调整,貌似出什么问题了
    【转自译言】在线劝说:7种说服人们网络购买的方法
    马化腾关于产品设计与用户体验的培训
    北京站售票人员倒票视频
    大型网站架构不得不考虑的10个问题
    在谈电子商务名词解释
    GridView
    CheckBoxList
    ShoppingCart
    MongoDB数据库简介及安装
  • 原文地址:https://www.cnblogs.com/zhlabcd/p/11753956.html
Copyright © 2011-2022 走看看