2016-09-16 9 views
5

私は、vulkanでレンダリングする深度テスト/ブレンディング関数などの異なるテクスチャ/パイプライン構造を持つ複数のメッシュを持っています。パフォーマンス面でのレンダリングのベストプラクティスは何ですか? nは何も、レイアウト、記述子、サンプラー、または何もそれらの間で共有されていないと噛み合っているためvulkanで複数のメッシュをレンダリングするためのベストプラクティス

  1. 1つのオプションは、n個のスレッドをn個のコマンドバッファを作成することです。私はこれと一緒に行く場合は、私は2番目のコマンドバッファを使用する必要があります1プライマリまたはそれらのすべてがセカンダリだろうか?

  2. n個のメッシュをレンダリングし、n個のパイプラインを作成し、ユニフォームと頂点データ用にn個のバッファを作成します。コマンドバッファの記録を開始し、ループ内で異なるパイプライン、バッファを持つn個のメッシュに対してvkcmdDrawを呼び出します。私はこのアプローチでレンダリングすることができます。しかし、私はそれをより速くするためにマルチスレッドを使用するのですか?

または他の方法ですか?

+1

Vulkanの質問をアップしてみようと思います。 – Krythic

+1

さて、 'vkQueueSubmit()'で使用するプライマリCBにする必要があります – krOoze

+0

どのような種類の "プロパティ"について話していますか?パイプライン構造(深度テスト)と記述子データ(テクスチャ)は区別されます。前者*は2つのオブジェクト間で共有することはできませんが、後者は共有することはできません。また、「2つのメッシュのレンダリングの間に何かを共有しようとすると、同期が必要になります。*「なぜ何かを共有するには同期が必要ですか? –

答えて

1
  1. 2メッシュのレンダリングの間に何かを共有する場合、同期が必要です。

そうではありません。共有するものがすべて読み取り専用であれば、同期は必要ありません。メッシュ間の同期が必要な唯一の時間は、メモリに書き込みをし、別のメッシュがメモリから読み込む場合です。パイプラインの状態とカラーアタッチメントは実装によって同期されるので、心配する必要はありません。

関連する問題