2011-12-11 11 views

cevap

10

Ayrı bir beze ihtiyacınız var. Diğer tuvali ilkine koyabilirsiniz, bu kötü bir uygulama olarak görülmez.

+0

Bazı tarayıcıların WebGL kanvasının ve çevresindeki öğelerin bileşimini çok etkili bir şekilde uygulamadığını (yani, görüntüyü OpenGL'den alarak ve daha sonra CPU'da bir araya getirerek, sonra da geri göndermeyi) bilmek yine de önemli olabilir. GPU'ya) ve 2D şeylerin ne kadar karmaşık bir şekilde çalıştığına bağlı olarak (yani, yalnızca GUI için bazı bitmap'ler çizerek), bunu WebGL tuvalini kullanarak yapmayı düşünebilirsiniz. WebGL'de 2B malzeme çizmek, doğru dönüşümleri kurmak ve belki de derinlik testini devre dışı bırakmak olmalıdır. – aphax

9

Tek bir kanvas öğesi için birden çok bağlamı kullanamazsınız. WebKit, bu açıkça in the source sözü geçerli:

// A Canvas can either be "2D" or "webgl" but never both. 

başka bağlam talep yaparsanız, null olsun:

if ((type == "webkit-3d") || 
     (type == "experimental-webgl")) { 
     if (m_context && !m_context->is3d()) 
      return 0; 

(Yani zaten başka bir bağlama sahip olduğunda bir 3D içeriği istemek, size null olsun.)

Muhtemelen istediğiniz iki tuval öğesi - biri 3D malzeme için diğeri ise 2D malzeme için. Eğer onları birbirinizin üzerine yerleştirirseniz, iki katman olarak hareket ederler ve her tuvali bağımsız olarak çizebilirsiniz.