2011-03-06 139 views
0

我正在學習opengl es,並計劃製作一個程序,該程序的形狀可以通過動態刪除部分形狀切割成更小的形狀。約束是我必須能夠判斷一個對象是否在切割形狀的內部或外部。模板緩衝區VS原始鑲嵌

我想到的選項是: 1)使用由黑色和白色蒙版組成的模板緩衝區。這樣我也可以使用相同的地圖進行碰撞檢測。 2)另一種選擇是動態地改變我的想法渲染原語,然後對其進行細分。這聽起來更復雜,目前我最不喜歡的選項。這也會使碰撞檢測更加困難。

PS 我想將形狀的一部分移除到動畫中,我不知道如何選擇這些方法中的任何一個都會影響這樣做的容易程度。請表達您的意見。

你對此有何看法?請注意,我是opengl的新手,可能會在沒有意識到的情況下犯錯。

感謝,傑森

回答

2

它通常被認爲是一個好主意,只發出寫命令的顯卡。基本上這是「根本不使用glGet *命令」,因爲這些命令的延遲可能有點高。

如果你只是想掩蓋的東西,說選項1)是偉大的。當您試圖使切割部分脫落時,這實際上不是一種選擇,因爲您必須檢索/重建該部分的頂點。

我不太清楚第二個選項的「tesselation」部分,但是如果您的圖元是多邊形並且切割是直線,那麼很容易計算切割後的2個多邊形。事實上,OpenGL中的視口裁剪例程始終存在很多文學作品,例如http://en.wikipedia.org/wiki/Sutherland-Hodgman

從長遠來看,首先構建一個什麼是(非視覺)模型通常會更好在可視化之前在應用程序中進行。

+0

很感謝您的回覆。順便說一句,我不會使用glRead *我只會覆蓋整個緩衝流。通過鑲嵌我的意思是把我可能得到的奇怪形狀的多邊形轉換成三角形。 – Jason 2011-03-06 14:32:05