2017-05-22 26 views
1

非常新的圖形通常,從金屬立即需要開始,將很快嘗試OpenGL。金屬中的colorAttachment [n]是什麼?

想知道這個問題是什麼意思,在俗人的條款。另外,'n'的範圍是多少,我在我做的二維三角形中用它作爲0。

回答

3

通常,顏色附件是呈現圖像在渲染過程中存儲(至少暫時)的位置。在索引0處僅使用一種顏色附件是很常見的,所以你在做什麼很好。也可以同時呈現多個顏色附件,這就是爲什麼有一個數組。這是一種先進的技術,你不必擔心,直到你看到需要,在這一點上,它應該是直截了當的如何做到這一點。

有兩個地方colorAttachments[n]出現在金屬。首先在MTLRenderPipelineDescriptor。另一個在MTLRenderPassDescriptor

在兩種情況下,範圍在Metal Implementation Limits表中的「渲染目標」部分中標有「每個渲染通道描述符的最大顏色渲染目標數」的行中給出。

對於MTLRenderPipelineDescriptor,colorAttachments[n]是對MTLRenderPipelineColorAttachmentDescriptor的引用。在這裏,您可以配置像素格式,寫入掩碼和顏色混合操作。

對於MTLRenderPassDescriptor,colorAttachments[n]是對MTLRenderPassColorAttachmentDescriptor的引用。這是MTLRenderPassAttachmentDescriptor的一個子類,它的大部分屬性都被定義。在這裏,您可以配置渲染到哪個紋理部分,渲染通道開始和結束時該紋理的數據會發生什麼,以及如果要清除,應該清除哪種顏色。

有關顏色附件的信息基於這兩個對象的基礎上分爲多少昂貴的改變。渲染管道狀態對象從管道描述符創建起來相當昂貴。您通常會在運行中創建所有管道狀態對象,並在應用程序的其餘生命週期中重複使用它們。

相比之下,您將經常從渲染通道描述符創建渲染命令編碼器;至少每幀一次。它們的創建成本相對較低,因此您可以更改描述符並創建一個新的渲染器以在其他位置渲染。

渲染管線狀態的顏色附件像素格式必須與渲染命令編碼器的顏色附件紋理的紋理的像素格式相匹配。