Viv*_*vam 5 opengl-es objective-c depth-buffer ios metal
我需要清除glClear(GL_DEPTH_BUFFER_BIT)在OpenGL中使用的深度缓冲区,在金属中怎么做?我浏览了Apple的文档,没有任何提示。
简短的回答是,要清除深度缓冲区,您可以在开始渲染通道之前添加这两行:
mRenderPassDescriptor.depthAttachment.loadAction = MTLLoadActionClear;
mRenderPassDescriptor.depthAttachment.clearDepth = 1.0f;
如果不结束并重新启动渲染通道,就无法清除。
长答案:
在 Metal 中,您必须定义在开始渲染到MTLTexture. 没有像 OpenGL 那样清晰的函数。
要做到这一点,在你的MTLRenderPassDescriptor,一套depthAttachment.loadAction给MTLLoadActionClear和depthAttachment.clearDepth给1.0f。您也可以设置colorAttachments[0].loadAction,以MTLLoadActionClear清除颜色缓冲区。
然后将此渲染过程描述符传递给您对MTLCommandBuffer::renderCommandEncoderWithDescriptor.
如果你想通过渲染你必须调用清理的深度或颜色缓冲区中途endEncoding上MTLRenderCommandEncoder,然后开始重新编码depthAttachment.loadAction设置为MTLLoadActionClear。
| 归档时间: |
|
| 查看次数: |
2908 次 |
| 最近记录: |