2012-10-30 92 views
0

我想允許用戶通過降低分辨率來調整窗口模式性能,而不必改變必須保持固定的實際窗口的大小。如果我用glViewport改變它,它會實際處理更少的片段,還是純粹是一種視覺轉換?假設我在我的着色器中進行了早期的深度測試,如果這很重要的話。OpenGL視口分辨率和性能

回答

2

如果您將視口設置爲窗口大小的子集,則會繪製更少的片段。問題是如果你真的想讓你的渲染只覆蓋窗口的一部分?

你通常會做的是呈現一個低分辨率的framebuffer object (FBO)。作爲最後一步,您將FBO閃爍到默認幀緩衝區(將結果縮放至過程中的窗口大小)。

當您渲染到FBO時,您必須將glViewport設置爲FBO的分辨率。

+0

這聽起來像是通過執行額外的渲染步驟消除了大部分節省的時間,並且在複製過程中禁用了着色器。有沒有辦法讓它自動伸展? – JAKJ

+0

@JAKJ呈現單個紋理四元組的第二遍比較便宜。您的其他選擇是如果課程始終呈現您的窗口的全分辨率。有一種神奇的方式來做到這一點,所有的像素都必須以某種方式填充。 – Plow

+0

這是一個恥辱,但我認爲獲得的一些表現勝於無。 – JAKJ