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 是对称的,mask 和 ref 实际上是完全相同的参数,不同之处在于 ref 将写入缓冲区。
【讨论】:
以上是关于glStencilFunc中mask参数的作用是啥的主要内容,如果未能解决你的问题,请参考以下文章
在 wininet.h 中 SECURITY_SET_MASK 的用途是啥?