2012-10-18 30 views
5

我有2d人物藝術將被映射到Box2d骨架。例如,角色的手臂可能是2個與肘關節相連的物理矩形。每個矩形都有自己對應的藝術精靈。下臂的藝術不會是完全的矩形。它可能是一個矩形PNG源,但會有很多負面空間,手臂不一定需要繪製。如何使用OpenGL將二維藝術分解爲三角形

我的問題是將二維藝術分解爲三角形的最佳方法是什麼?我是否應該將所有平面小精靈視爲由2個三角形組成的簡單矩形,並留下大量的alpha空間?或者,最好是將形狀分解成多個三角形,並嘗試與實際形狀(可能與三角形風扇)相匹配?每種方法的某些優點/缺點可能是什麼?我會更新紋理,因爲角色發生各種各樣的事情。

這裏就是我在談論的一個例證:

img

(紅色正方形是物理形狀,藍色的線是可能的三角形的結構)

回答

1

少幾何通常是性能更好(左起第三位)。

「精確」三角測量(左起第4個)對於高保真碰撞檢測(反射閃亮小行星的激光?)有用。

請注意頻繁的紋理更新。 glTexSubImage2d()是要走的路。

如果你的GL實現支持它,你可以做異步上傳using PBOs

+0

謝謝。我沒有考慮碰撞檢測的實際藝術形狀。這可能都是用物理模型完成的。我想我是在想,如果所有額外的渲染alpha空間都會消除2三角形解決方案簡單性的好處......特別是當紋理變得更少矩形和使用更多負空間時。圓形的東西,像流星紋理,在矩形紋理中會有很多負面的空間。將這些alpha = 0區域中的幾個重疊在一起會產生一些負面影響,對吧? –

+2

如果您不需要實際的alpha混合(由於添加了目標像素讀取,需要更多的內存帶寬),您可以使用[alpha測試](http://www.opengl.org/wiki/Transparency_Sorting#Alpha_test) ,如果阿爾法值低於某個閾值,它會丟棄一個傳入的像素。實際上,我認爲你可以將混合和Alpha測試結合起來,以獲得兩全其美的效果:在閾值較低的情況下,純零像素會在混合前儘早被撲滅,同時仍然可以在對象邊緣進行漂亮的Alpha漸變。 – genpfault

+0

很棒......這很有意義,而且非常有幫助。 –