2017-10-25 3 views
0

6つのレイヤーを持つキューブマップである1つのカラーアタッチメントを持つフレームバッファーを持っています。ジオメトリシェーダでレイヤードレンダリングを使用しようとしています。単純な三角形をすべてのレイヤーにレンダリングします。しかし、vkCmdBeginRenderPassですべてのレイヤーをクリアする方法がわかりません。vkCmdBeginRenderPassですべてのレイヤーをクリアする(Vulkan、レイヤードレンダリング)

vkCmdBeginRenderPasspClearValuesclearValueCountをサポートしていますが、層数を指定することはできません。したがって、最初のレイヤーだけがクリアされます。 clearValueCountを6に設定して6個のクリア値を与えることも役に立ちません。

vkCmdClearAttachmentsはレイヤーを指定できるようです。

vkCmdClearAttachmentsは唯一の方法ですか、何か迷っていましたか? vkCmdBeginRenderPassが最初のレイヤーだけをクリアする理由はありますか?ただし、レンダリングはすべてのレイヤーにレンダリングされているようです。

答えて

1

clearValueCountは、クリアする添付ファイルの数(そのclearOpに関して)であり、フレームバッファのレイヤではありません。

フレームバッファのレンダリング開始時(clearOpがクリアに設定されている場合)にクリアされるレイヤ数は、imageViewのサブリソースのlayerCountで指定されます。

+0

imageViews layerCountが実際に正しくありました。しかし、VkFramebufferCreateInfo.layersは間違っていました(興味深いことに、インテルのドライバーはレイヤーにラスタライズしていますが、レイヤーをクリアしませんでした)、Nvidiaドライバーはレンダリングもクリアもしませんでした。 低レベルのAPI;) – FibHeap

関連する問題