2010-06-30 33 views
1

我正在繪製大量的半透明多邊形。我的場景是2D並使用2f頂點。我不能使用深度緩衝區,因爲它不會幫助,因爲alpha混合。什麼是其他一些技術來減少透支,因爲這是削弱我的應用程序,而不是多邊形計數,因爲我使用VBO的。謝謝防止透支(OpenGL)的技巧

+0

「透支」究竟是什麼意思?僅僅因爲你使用VBO並不意味着你不能一次嘗試渲染太多。 – 2010-06-30 23:21:10

+0

@Jon Cage:基本上,渲染場景時多次繪製相同的像素。使用半透明多晶硅時,一些透視是必要的,但我敢肯定,您可以前後排列您的多面體,然後使用一些模板魔法在已經繪製像素幾次之後不繪製像素。 – 2010-06-30 23:25:05

+0

我的意思是,如果我繪製一個50x50的正方形陣列,它不會滯後,但是在另一個頂部的50x50正方形1確實很多。 – jmasterx 2010-06-30 23:25:23

回答

4

首先,你怎麼確定透支是你的問題?如果沒有更多關於你正在繪製的信息,很難猜測如何更快地繪製它。一般而言,避免過度抽取的關鍵是避免畫出任何不需要的東西。所以,如果你有一個2D側滾動遊戲,並且爲了視差目的而獨立滾動幾層背景圖像 - 天空,雲彩,山脈,遠處的森林和附近的森林 - 你會想要避免在任何其他地方繪製天空圖層可見。因此,如果您知道山脈確保覆蓋天空的某一部分,請改變天空多邊形的形狀,以便只在您期望天空可見的區域繪製。如果您仍然有問題,可能會爲跟隨山脈形狀的天空創建一個相當高分辨率的網格。同樣,如果森林層的地平面保證覆蓋一定的高度跨度,那麼不要在該地區繪製山脈。

在現代視頻硬件上,OTOH在2D場景中透支的幾層通常不是什麼大問題,所以我仍然很想知道你是如何確定這一點的,並且如果可能有某種類型的你的儀器和分析中存在偏差,這可能導致你誤入歧途。

+0

+1:我的想法正是:) – 2010-06-30 23:35:34

+0

我正在製作一個矢量繪圖應用程序,我推着它,經過大約35層後,它變得遲鈍,不是在我的電腦上,而是在我的筆記本電腦上,我只是想讓它變得儘快儘可能。 – jmasterx 2010-06-30 23:38:12

+1

要我上傳這個exe文件,這樣你才能評估你自己? – jmasterx 2010-06-30 23:42:17

0

在你的特定場景中,我會考慮將一些圖層渲染成OpenGL FBO(靜態圖層)。 然後合成動態圖層和靜態圖層等

畢竟,如果它是一個矢量繪圖應用程序,您不需要在每次用戶交互時重繪所有內容。

+0

我必須重繪一切OnScroll() – jmasterx 2010-07-01 00:26:20

+0

你能渲染一個大的補丁一次(然後複製一個合適的比例或大補丁),還是一切都變得很頻繁? – 2010-07-01 07:50:21

+0

@ user146780:OnScroll()是指放大,縮小?如果每次觸發該事件都必須渲染所有內容,則這不應該成爲問題:放大意味着繪製的圖元較少,縮小意味着要混合的像素較少。 – Stringer 2010-07-01 13:07:21