OpenGL

2012-10-18 21 views
5

kullanarak 2d resmini üçgenlere ayırma Bir Box2d iskeletine eşlenecek 2d karakter resmim var. Karakterin kolu, örneğin, dirsekte bir eklem ile bağlanmış 2 fizik dikdörtgen olabilir. Her bir dikdörtgenin kendine ait ilgili sanat spritı olacaktır. Alt kol için sanat tamamen dikdörtgen olmayacaktır. Dikdörtgen bir png kaynağı olabilir, ancak kolun zorunlu olarak çizilmediği birçok negatif alan olacaktır.OpenGL

Benim sorum, 2d sanatını üçgenlere ayırmanın en iyi yolu nedir? Tüm düz sprite'ları 2 üçgenden oluşan basit bir dikdörtgen olarak ele almalı mıyım? Veya şekli birden çok üçgen halinde parçalamak ve gerçek şekli (muhtemelen bir üçgen fanla) eşleştirmeye çalışmak en iyisidir? Her yaklaşımın bazı avantajları/dezavantajları neler olabilir? Dokulardaki karakterlere çeşitli şeyler olarak güncelleniyor olacağım.

img

cevap

1

Az geometri genellikle (kırmızı kare fizik şekli ve mavi çizgiler olası üçgen yapılandırmalarıdır): İşte

ben neden bahsettiğimi ilgili bir açıklama performans için daha iyi (soldan 3.).

"Tam" üçgenleme (soldan 4.), yüksek doğruluklu çarpışma algılaması (parlak bir asteroidden yansıyan lazerler) için yararlı olabilir.

Sık doku güncellemeleri konusunda dikkatli olun. glTexSubImage2d() gitmek için yoldur.

GL uygulamanız destekliyorsa, eşzamanlı olmayan yüklemeler using PBOs yapabilirsiniz.

+0

Teşekkürler. Çarpışma tespiti için güncel sanat şekillerini düşünmüyorum. Muhtemelen fizik modeli ile yapılacaktır. Sanırım tüm bu ekstra işlenmiş alfa alanı 2 üçgen çözümün sadeliğinin yararını ortadan kaldıracaktır… özellikle de dokular daha az dikdörtgen ve daha negatif alan kullanıldığında . Bir meteor dokusu gibi dairesel bir şey, dikdörtgen dokuda çok fazla negatif alana sahip olacaktır. Bu alfa = 0 alanlarının bir tanesinin üst üste çakışmasının bir miktar olumsuz etkisi olmalı, doğru mu? –

+2

Gerçek alfa harmanlamaya ihtiyacınız yoksa (bu, eklenen hedef piksele bağlı olarak daha fazla bellek bant genişliği gerektirir) [alpha testing] (http://www.opengl.org/wiki/Transparency_Sorting#Alpha_test) ile uzaklaşabilirsiniz. Yalnızca alfa değeri belirli bir eşiğin altındaysa gelen bir pikseli atar. Aslında bence her iki dünyanın en iyisini elde etmek için harmanlama ve alfa testlerini birleştirebilirsiniz: Düşük bir eşik değerine sahip saf-sıfır pikseller, nesnelerin kenarlarında hoş bir alfa kaybına izin verirken, (harmanlamadan önce) erken bir şekilde kaldırılır. – genpfault

+0

Harika ... bu çok mantıklı ve çok yardımcı oluyor. –