使用渲染通道和模具缓冲区将模具应用到 3D 内容,使 Kanzi 仅渲染内容的选定区域。
模具缓冲区是当前帧缓冲区中的图像,您可以用当前帧缓冲区来控制 Kanzi 渲染哪些像素。您根据模具缓冲区的值使用渲染通道放弃或渲染内容中的特定像素。通过这种方式,您可以将渲染区域限制为您用作模具的节点形状。节点形状用作模具中的间隙,确定内容中哪些部分是可见的。
要将模具应用至 3D 内容并仅渲染模板定义的区域:
使用模具测试函数 (Stencil Test Function) 属性将模具函数参考值 (Stencil Function Reference Value) 与模具缓冲区中的值进行比较。
您可以使用以下操作:
模具测试函数 (Stencil Test Function) | 描述 (Description) |
---|---|
始终 (Always) | 总是传递 |
等于 (Equal) | 如果值相等则传递 |
Greater | 如果模具函数参考值 (Stencil Function Reference Value) 大于模具缓冲区中的值则传递 |
Greater or Equal | 如果模具函数参考值 (Stencil Function Reference Value) 大于或等于模具缓冲区中的值则传递 |
Less | 如果模具函数参考值 (Stencil Function Reference Value) 小于模具缓冲区中的值则传递 |
Less or Equal | 如果模具函数参考值 (Stencil Function Reference Value) 小于或等于模具缓冲区中的值则传递 |
Never | 总是失败 |
不等于 (Not equal) | 如果模具函数参考值 (Stencil Function Reference Value) 不同于模具缓冲区中的值则传递 |
使用模具测试函数 (Stencil Test Function) 比较模具函数参考值 (Stencil Function Reference Value) 和模具缓冲区中的值时,您可以使用模具函数遮罩 (Stencil Function Mask) 属性对它们执行按位 AND 操作。这样,您只能修改模具缓冲区中的特定位。默认情况下,将 模具函数遮罩 (Stencil Function Mask) 设为 255 时,所有 模具测试函数 (Stencil Test Function) 操作会对缓冲中的所有位执行读写操作。
例如,如果将模具函数遮罩 (Stencil Function Mask) 设为 2,Kanzi Studio 只保留模具引用值的第二位和模具缓冲区值。这样,您可以使用模具缓冲区的不同位数来遮罩屏幕上的不同元素。
使用 模具失败操作 (Stencil Fail Operation)、模具通道深度失败操作 (Stencil Pass Depth Fail Operation) 和 模具通道深度通道操作 (Stencil Pass Depth Pass Operation) 属性设置模具缓冲区中的值,具体取决于模具和深度测试的结果。默认情况下,Kanzi Studio 保留当前值。
您可以使用以下操作:
操作 (Operation) | 描述 (Description) |
---|---|
Decrease | 如果模具值大于 0,则减去 1。 |
Decrease wrap | 否则与 Decrease 相同,但如果当前值为 0,则将该值设为模具缓冲区的最大可能值,通常为 255。 |
Increase | 如果模具值小于最大值,则增加 1。 |
Increase wrap | 否则与 Increase 相同,但如果超出最大值,则将该值设为 0。 |
Invert | 向该值应用按位反转。 |
Keep | 保留当前值。 |
替换 (Replace) | 使用模具函数参考值 (Stencil Function Reference Value) 属性的值替换模具值。 |
Zero | 将模具值设为 0。 |