glStencilFunc中mask参数的作用是啥

Posted

技术标签:

【中文标题】glStencilFunc中mask参数的作用是啥【英文标题】: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 运算的掩码”,但我们为什么需要它?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

以上是关于glStencilFunc中mask参数的作用是啥的主要内容,如果未能解决你的问题,请参考以下文章

glStencilFunc 由于某种原因无法工作:(

在 wininet.h 中 SECURITY_SET_MASK 的用途是啥?

“int mask = ~0;”的目的是啥?

在使用 TensorFlow Object Detection API 训练 Mask RCNN 时,“损失”是啥?

ip routing 主要是啥功能,有啥作用

Mask RCNN 的损失函数是啥?