我对图形技术一窍不通,现在需要使用Metal,不久会尝试使用OpenGL。
请问这个问题用通俗易懂的语言解释是什么意思?另外,“n”代表什么范围?在我制作的2D三角形中,我只将其设为0。
colorAttachments[n]
出现在两个地方。首先是在MTLRenderPipelineDescriptor
中。另一个是在MTLRenderPassDescriptor
中。MTLRenderPipelineDescriptor
,colorAttachments[n]
是一个指向MTLRenderPipelineColorAttachmentDescriptor
的引用。在此处,您配置像素格式、写掩码和颜色混合操作。MTLRenderPassDescriptor
,colorAttachments[n]
是一个指向MTLRenderPassColorAttachmentDescriptor
的引用。这是MTLRenderPassAttachmentDescriptor
的子类,该类定义了大部分属性。在此处,您可以配置要呈现到哪个纹理的哪个部分,当渲染通道开始和结束时该纹理的数据应该发生什么变化,以及如果需要清除,则应将其清除为什么颜色。
关于颜色附件的信息根据更改的成本分布在这两个对象之间。渲染管线状态对象从管线描述符中创建比较昂贵。通常情况下,您会在运行时创建所有的管线状态对象,并在应用程序的整个生命周期内重复使用它们。
相比之下,您会经常从渲染通道描述符中创建渲染命令编码器;至少每帧一次。它们的创建成本相对较低,因此您可以更改描述符并创建一个新的描述符以在其他地方进行渲染。
渲染管线状态的颜色附件像素格式必须与渲染命令编码器的颜色附件纹理的像素格式匹配。
clear action
和store action
如何工作? - krosshjMTKView
或CAMetalLayer
,这些对象会管理它们自己的可绘制/纹理池。您可以分别使用currentDrawable
或nextDrawable
方法为给定的渲染通道获取其中一个。 - Ken Thomases