2011-09-10 23 views
0

我正在爲名爲Gwen的GUI工具箱的OpenGL 3渲染器工作。我幾乎有一切工作,但我有一些問題得到一切正確混合。我已經按照它們使用的紋理對三角形進行了排序,並將它們打包到VBO中,所以使用單元測試時,它基本上歸結爲3層:沒有紋理的填充矩形,文本,以及窗口,按鈕等,它們使用肌理。我應該如何進行深度獨立混合?

Filled Rects通常被繪製在其他任何東西的頂部並被混合,但背後的背景也是一個Filled Rect,所以我不能指望它。如果您最後繪製它們(例如:窗口周圍有紋理陰影,因爲背景未通過深度測試而變黑)以及如果先繪製它們時出現混合/ z值衝突,則會出現Z值衝突(前:一些選擇亮點被繪製在頂部,而不是像他們應該那樣進行混合)。

我不能指望能夠識別除Filled Rects以外的任何特定圖層。不同的圖層有z值的混合,所以我不能只按照一定的順序繪製它們來使事情有效。在寫這篇文章的時候,我想到了一種簡單的繪製三角形的方法,但它可能意味着很多小的繪製調用,我希望避免。是否有一些方法會涉及一些巫術魔法混合,讓我保留我的大批三角形?

+3

格溫很棒。但它會混合? –

回答

3

您正在繪製GUI;批處理不應該成爲你的第一優先事項,因爲一個簡單的事實,GUI只是沒有多大作用。 GUI幾乎不會成爲你的性能瓶頸。這種過早優化的氣味;首先,讓它工作。然後,如果速度太慢,請加快速度。

沒有與順序無關的透明度的簡單機制。你最好的選擇是按照正確的Z順序渲染東西。

+0

我只是不想把它弄得太糟糕,因爲其他人可能最終會使用它。我有點期待「按z排序」的答案,但這並不需要花費任何費用。 – Apostate

相關問題