Metal Best Practices Guideには、最高のパフォーマンスのために、「動的バッファデータを更新するためのトリプルバッファモデルを実装する」こと、および「動的バッファデータはバッファに格納された頻繁に更新されるデータを参照する」ことが記載されています。メタルベストプラクティス:トリプルバッファリング - テクスチャも?
フレームごとに更新する必要がある場合は、MTLTexture
は「バッファに格納された頻繁に更新されるデータ」となりますか?上のガイドのすべての例は、MTLBuffer
に焦点を当てています。
私はAppleKitの実装がnextDrawable
のコンセプトを持っていることに気づいています。ここには何が起きているのでしょうか?
面白い、ありがとう。したがって、マルチパスレンダリングの場合、つまり1回のパスで背景がテクスチャにレンダリングされ、次のレイヤが別のテクスチャにオーバーレイをレンダリングし、前の2つのテクスチャを合成する最終パスが同じリスクを受けることになります最後のパスに加えて、最初の2つのパスのターゲットテクスチャをマルチバッファリングすることなく破損していますか? – Tricky
あなたが説明しているシナリオを理解すれば、それはマルチバッファリングを必要としません。 1つのフレームの2つのテクスチャの合成は、次のフレームのために上書きされる前に完了します(間違った順序でコマンドをエンキューしない限り)。 –