2017-03-17 43 views
5

設置這個變量是做什麼的?例如,如果我將它設置爲4,那是什麼意思?我對GLFW_SAMPLES的選擇實際上做了什麼?

我在「Framebuffer related hints」一節中閱讀了glfw.org上的說明(請參閱此處:GLFW Window Guide)。該手冊說:「GLFW_SAMPLES指定了用於多重採樣的所需樣本數量,零禁用多重採樣,GLFW_DONT_CARE表示應用程序沒有偏好。」

我也讀了一般性多重採樣的描述(參見:Shawn Hargreaves的Multisampling)。

我對多采樣意味着什麼:對圖像進行大小調整和重繪時,用於重繪圖像的點數應該足夠接近,以便我們看到圖像的精確表示。數字示波器也會出現同樣的想法---比如說你正在採樣一個正弦信號。如果採樣率恰好等於波的頻率(f),示波器將顯示一個恆定的電壓,這與您希望看到的輸入信號大不相同。爲了避免這一點,奈奎斯特定理告訴我們,我們應該以至少2f的速率進行採樣。所以我看到在計算機圖形學中如何出現問題,但我不知道究竟是什麼功能

glfwWindowHint(GLFW_SAMPLES, 4);呢。

回答

7

設置這個變量是做什麼的?例如,如果我將它設置爲4,那是什麼意思?

GLFW_SAMPLES用於啓用多重採樣。因此glfwWindowHint(GLFW_SAMPLES, 4)是一種在您的應用程序中啓用4x MSAA的方法。

4x MSAA意味着窗口緩衝區的每個像素都由4個子採樣組成,這意味着每個像素都由4個像素組成。因此,尺寸爲200x100像素的緩衝區實際上是800x400像素。


如果您要創建比屏幕大4倍的附加幀緩衝區。然後使用它作爲紋理採樣器與GL_LINEAR作爲過濾器,基本上會達到相同的結果。 請注意,這只是4x MSAA的情況,因爲GL_LINEAR只需要4個最接近相關像素的樣本。

當談到抗鋸齒,然後使用MSAA是一個非常有效但昂貴的解決方案。如果你想要一個非常乾淨和好看的結果,那肯定是要走的路。通常選擇4x MSAA,因爲在使用質量和性能之間有很好的平衡。

在性能方面更便宜的選擇是使用FXAA。這是作爲後處理步驟完成的,通常是免費的。不同之處在於MSAA呈現更大的尺寸,下采樣到想要的尺寸,而不會失去任何質量。 FXAA只是簡單地對像素進行平均處理,基本上使圖像模糊。 FXAA通常會給出一個非常好的結果。

此外,您的驅動程序很可能默認啓用它。但是,如果它不使用glEnable(GL_MULTISAMPLE)


最後如果你還沒有,那麼我強烈推薦閱讀LearnOpenGL's Anti-Aliasing教程。它對這一切給出了一個真正深入的解釋。

相關問題