一般来说,图形学非常新手,从Metal开始满足即时需求,很快就会尝试OpenGL。
想知道这个问题在外行人中意味着什么。另外,"n"的范围是多少,我刚刚在我制作的 2D 三角形中将其用作 0。
通常,颜色附件是在渲染通道期间存储(至少是暂时)渲染图像的位置。通常在索引 0 处只使用一个颜色附件,所以你做的很好。也可以同时渲染到多个颜色附件,这就是存在数组的原因。这是一种先进的技术,在你看到需求之前,你不必担心,在这一点上,如何做到这一点应该是直截了当的。
colorAttachments[n]
在金属中出现的地方有两个。首先是在MTLRenderPipelineDescriptor
.另一个是MTLRenderPassDescriptor
.
在这两种情况下,范围都在金属实现限制表的"渲染目标"部分的"每个渲染通道描述符的最大颜色渲染目标数"的行中给出。
对于MTLRenderPipelineDescriptor
,colorAttachments[n]
是对MTLRenderPipelineColorAttachmentDescriptor
的引用。在这里,您可以配置像素格式、写入掩码和颜色混合操作。
对于MTLRenderPassDescriptor
,colorAttachments[n]
是对MTLRenderPassColorAttachmentDescriptor
的引用。这是MTLRenderPassAttachmentDescriptor
的一个子类,它的大部分属性都是在这里定义的。在这里,您可以配置要渲染到哪个纹理的哪个部分,渲染通道开始和结束时该纹理的数据应该发生什么变化,如果要清除它,它应该清除到什么颜色。
有关颜色附件的信息根据更改的成本在这两个对象之间拆分。从管道描述符创建渲染管线状态对象的成本相当高。通常在一次运行中创建一次所有管道状态对象,并在应用的剩余生存期内重复使用它们。
相比之下,您将相当频繁地从渲染通道描述符创建渲染命令编码器;每帧至少一次。它们的创建成本相对较低,因此您可以更改描述符并创建一个新描述符以在其他地方呈现。
呈现管线状态的颜色附件像素格式必须与呈现命令编码器的颜色附件纹理的纹理的像素格式匹配。