【问题标题】:What is the role of mask parameter in glStencilFuncglStencilFunc中mask参数的作用是什么
【发布时间】:2019-12-28 04:07:29
【问题描述】:

在函数中

glStencilFunc(GLenum func, GLint ref, GLuint mask)

掩码的作用是什么,我们正在发送 ref 值并且缓冲区内容正在与 ref 值进行比较,而不是我们需要发送掩码值?

我读到的关于掩码值的内容是“与参考值和存储的模板值进行 AND 运算的掩码”,但我们为什么需要它?

【问题讨论】:

    标签: opengl glsl


    【解决方案1】:

    这完全取决于您使用模板做什么。一些模板操作将模板值视为一个整数,为了某些效果或目的而增加和/或减少模板值。其他操作将其用作位掩码,其中模板值中的每个位或位组代表特定的东西。也就是说,从语义的角度来看,您有多个值恰好存储在相同的 8 位空间中。

    mask 值适用于此类情况。您可能有 8 个单独的遮罩区域,并且您希望针对其中一个区域渲染一些几何图形。您可以使用mask 参数来指定哪个位(指定区域)来屏蔽一块几何体。

    【讨论】:

      【解决方案2】:

      它还允许您通过交换“ref”和“mask”的值来控制写入模板缓冲区的值。

      通常,glStencilFunc 会针对 ref 进行 检查,如果片段通过测试,ref 也会写入 到模板缓冲区。这限制了您可以执行的操作,因为您只能对您随后编写的位掩码进行操作。

      但由于 AND 是对称的,maskref 实际上是完全相同的参数,不同之处在于 ref 将写入缓冲区。

      【讨论】:

        猜你喜欢
        • 2011-10-29
        • 2020-02-28
        • 2018-02-26
        • 2019-09-23
        • 2013-03-26
        • 2018-03-04
        • 2020-02-18
        • 2020-11-29
        • 1970-01-01
        相关资源
        最近更新 更多