2017-02-26 72 views
1

在vulkan中有一個管道創建所需的結構,名爲VkPipelineRasterizationStateCreateInfo。在這個結構中有一個名爲rasterizerDiscardEnable的成員。如果此成員設置爲VK_TRUE,則在光柵化步驟之前放棄所有基元。這將禁用對幀緩衝區的任何輸出。什麼時候關閉柵格化步驟有意義?

我不能想到這可能會有任何意義的情況。在哪些情況下可能有用?

+1

大概是爲了允許擴展來做類似於opengl的變換反饋。 –

回答

3

這將是任何情況下,你只是執行渲染管道的頂點處理階段的副作用。例如,您可以使用GS將數據提供給緩衝區,稍後將渲染緩衝區。

現在很多情況下,您可以使用計算着色器來做類似的事情。但是你不能使用CS來高效地實現細分;這最好由硬件tessellator完成。所以如果你想捕獲由鑲嵌細分產生的數據(大概是因爲你會多次渲染),你必須使用渲染過程。

+0

用一個真實世界的例子來說明這點:點曲面細分體素化(www.cs.columbia.edu/~fyun/gi12/paper100.pdf)是我最近實現的,我使用圖形傳遞到曲面細分器然後使用幾何着色器寫出3D緩衝區。從那裏你移動到計算着色器來實際創建體素。 –