SORU
14 Ocak 2013, PAZARTESİ


Optimize dikdörtgenler üst üste binen çizim

Dikdörtgenler çok sayıda var, ve bazı Diğerleri örtüşüyor; her dikdörtgen z-sırası ve bir mutlak vardırrenk. (Her bir 'dikdörtgen' aslında bir parçacık etkisi, örgü veya doku eksen hizalı sınırlayıcı kutu ve yarı saydam olabilir. Daha kolay sorun o açıklama kullanacağım çok renkli dikdörtgenler ile ilgili soyut Diğerleri arkasında dikdörtgenler itlaf etmeye çalışmadığın sürece bence:) ama onun

Değiştirme maliyeti 'renk' oldukça yüksek; farklı renkli iki dikdörtgen çizin daha. çok daha hızlı bir şekilde arka arkaya iki mavi dikdörtgenler çizmek için

Bile ekranda çizim dikdörtgenler ve maliyet çok yüksek ve kaçınılmalıdır.

Eğer iki dikdörtgeni üst üste yaparsan, bir diğerine göre çizilmiş sırası önemli değildir. Eğer z-sırası üst üste onun sadece önemlidir.

Örneğin:

Overlapping Rectangles

1 (kırmızı) ve 4 (kırmızı) birlikte çizilebilir. 2 (mavi) ve 5 (mavi) ayrıca 3 (yeşil) ve 7 (yeşil) olarak birlikte çekilmiş olabilir. Ama 8 (kırmızı) 6 (mavi) sonra çekilmiş olmalı. ya üç kırmızı birlikte çekiyoruz ve iki mavi çizim setleri, yoksa mavi birlikte çizin ve iki set kırmızı çizin.

Ve dikdörtgenler bazı bazen hareket edebilir. (Hepsi değil, bazıları dikdörtgen, statik olarak bilinen, Diğerleri taşımak için bilinmektedir.)

JavaScript/bu sahneyi webGL çizim olacağım.

Nasıl dikdörtgen çizinmakul bir sipariş renk değişiklikleri en aza indirmek içiniyi bir ticaret-off itlaf JavaScript kodu vs GPU itlaf bırakmak mı?

(Dikdörtgenler üst üste olan ve görünür olan çalışma pahalıdır. Ben bir basic quadtree ve bu gerizekalılar benim sahne hazırlanması son derece (göre sadece yayan çiz-ops için tüm sahneyi); şimdi soru nasıl en aza indirmek için OpenGL durum değişiklikleri ve arada öznitelik dizileri mümkün olduğunca)

GÜNCELLEMEÇok basit bir test uygulaması sorunu göstermek ve çözümleri gösterimi için bir temel olarak hizmet için tasarlanmıştır: http://williame.github.com/opt_rects/

Kaynak kodu github üzerinde kolayca çatallı olabilir: https://github.com/williame/opt_rects

Aslında tam benim oyunda gördüğüm sorunu yeniden oluşturmak için yeterli devlet ile küçük bir test uygulaması yapmak zor değiştirmek dönüyor. Bir noktada durum değişiklikleri yeterince pahalı olabilir verilen bu almak zorundasın. Ayrıca önemli olan mekansal Endeksi () demo quadtree ve genel yaklaşım hızlandırmak için nasıl.

CEVAP
17 Ocak 2013, PERŞEMBE


Masaüstü tarayıcı üzerinde elde edilecek performans bir şekilde iPhone üzerinde performans belirleyecek çok yanlış bir varsayım yapıyoruz. İPhone donanım parçası shader çok geç boru hattı kullanılan her neyse demek ki tile-based deferred rendering uygulayan anlamak gerekir. Apple kendini deyimiyle“CPU zaman sıralama nesneleri önden arkaya boşa harcamayın”), Z-sıralama senin ilkel insanların sana küçük bir performans artışı elde edecek.

Eğer bu renk değiştirme pahalı . ama önerim şu: ^em>sadece renk değişikliği yok: köşe bir niteliği olarak geçer, ve bir süper shader içine davranışları birleştirme bile sıralama olmadan veya birkaç toplu bir her şeyi çizebilirsiniz. Kıyaslama ve en iyi parti büyüklüğü belirleme platformu için.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Howard Pinsky

    Howard Pinsk

    6 AĞUSTOS 2006
  • PUSHER

    PUSHER

    11 HAZİRAN 2014
  • The Slow Mo Guys

    The Slow Mo

    15 AĞUSTOS 2010