非常新的图形在一般情况下,从金属立即需要,将试用OpenGL足够快。
他想知道这个问题从外行人的角度来说意味着什么。还有,'n‘的范围是多少,我刚刚在我做的二维三角形中用它作为0。
发布于 2017-05-22 11:46:04
通常,颜色附件是在呈现传递过程中存储呈现图像的地方(至少是暂时的)。在索引0处只使用一个颜色附件是很常见的,所以您所做的一切都很好。同时呈现给多个颜色附件也是可能的,这就是为什么会有一个数组。这是一种先进的技术,在你认识到需要之前,你不必担心它,在这一点上,如何做到这一点应该是简单明了的。
金属中有两个地方出现colorAttachments[n]
。首先是在MTLRenderPipelineDescriptor
。另一个在MTLRenderPassDescriptor
。
在这两种情况下,范围都在金属执行限值表中的“呈现目标”部分中,在标签为“每个呈现传递描述符的最大颜色呈现目标数”的行中。
对于MTLRenderPipelineDescriptor
,colorAttachments[n]
是对MTLRenderPipelineColorAttachmentDescriptor
的引用。在这里,您配置像素格式、写入掩码和颜色混合操作。
对于MTLRenderPassDescriptor
,colorAttachments[n]
是对MTLRenderPassColorAttachmentDescriptor
的引用。这是MTLRenderPassAttachmentDescriptor
的一个子类,它的大多数属性都是在这里定义的。在这里,您将配置您将呈现到的纹理的哪一部分,在呈现传递开始和结束时,该纹理的数据应该发生什么变化,如果要清除该纹理,则应该将其清除到什么颜色。
有关颜色附件的信息根据更改的成本在这两个对象之间进行拆分。从管道描述符创建呈现管道状态对象是相当昂贵的。您通常会在运行时创建所有管道状态对象,并在应用程序生命周期的剩余时间内重用它们。
相反,您将经常从呈现传递描述符创建呈现命令编码器;每帧至少创建一次。创建它们相对便宜,因此您可以更改描述符并创建一个新描述符以在其他地方呈现。
呈现管道状态的颜色附件像素格式必须与呈现命令编码器的颜色附件纹理的像素格式相匹配。
https://stackoverflow.com/questions/44118942
复制相似问题