在OpenGL中,我们可以通过以下方式禁用深度测试并仅更新深度纹理(深度纹理通过GL_DEPTH_ATTACHMENT
绑定到FBO的glFramebufferTexture2D
):
glDisable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glDisable(GL_DEPTH_TEST)
表示所有片段都将“始终通过”,因此我将MTLCompareFunctionAlways
设置为depthCompareFunction
中的MTLDepthStencilDescriptor
。
glDepthMask(GL_TRUE)
意味着深度纹理将使用片段的深度值(无论之前具有的值)进行更新。在“金属”中,我将true
的{{1}}设置为depthWriteEnabled
。
不幸的是,最终的渲染结果是错误的。我理解不对吗?如果是,那么如何在Metal中以正确的方式进行设置。
答案 0 :(得分:0)
即使深度缓冲区存在并且深度掩码不为零,如果禁用深度测试,深度缓冲区也不会更新。为了无条件写入深度缓冲区,应启用深度测试并将其由WITH SERDEPROPERTIES("hbase.columns.mapping" = "personal data:,:key")
设置为GL_ALWAYS
。