2011-12-11 13 views
11

मैं experimental-webgl उपयोग करना चाहते हैं, और 2d कैनवास भी संदर्भ। 3 डी ऑब्जेक्ट्स तैयार करने के बाद, मैं इसके बारे में कुछ 2 डी ऑब्जेक्ट्स खींचना चाहता हूं।एकाधिक कैनवास संदर्भों का उपयोग कैसे करें?

मैं इसे कैसे करना चाहिए?

उत्तर

10

आप एक अलग कैनवास की जरूरत है। आप दूसरे कैनवास को पहले पर रख सकते हैं, इसे खराब अभ्यास नहीं माना जाता है।

+0

यह अभी भी पता चला है कि कुछ ब्राउज़रों (एक बहुत कुशल तरीके से WebGL कैनवास के संयोजन और आसपास के तत्वों को लागू नहीं करते यानी ओपन से चित्र लेने और फिर CPU पर संयोजन, फिर इसे वापस भेजने प्रासंगिक हो सकती हैं GPU करने के लिए), और कैसे जटिल 2D सामान है कि आप क्या करने के लिए (यानी सिर्फ जीयूआई के लिए कुछ बिटमैप्स ड्राइंग कोशिश कर रहे हैं) है पर निर्भर करता है, यह रूप में अच्छी तरह WebGL कैनवास के माध्यम से कर रही पर विचार के लायक हो सकता है। वेबजीएल में 2 डी सामान ड्राइंग करना सही परिवर्तनों को स्थापित करने और शायद गहराई परीक्षण को अक्षम करने का मामला होना चाहिए – aphax

9

आप एक कैनवास तत्व के लिए कई संदर्भों का उपयोग नहीं कर सकते हैं। वेबकिट में, यह स्पष्ट रूप से उल्लेख किया in the source है:

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

यदि आप किसी अन्य संदर्भ का अनुरोध करते हैं, तो आप null मिलती है:

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

(तो तुम एक 3 डी संदर्भ का अनुरोध करता है, तो जब आप पहले से ही एक अन्य संदर्भ है आप, null प्राप्त करें।)

आप जो चाहते हैं वह दो कैनवास तत्व हैं - एक 3 डी सामान के लिए और दूसरा 2 डी सामान के लिए। यदि आप उन्हें एक-दूसरे पर रखते हैं, तो वे दो परतों के रूप में कार्य करते हैं, और आप स्वतंत्र रूप से प्रत्येक कैनवास पर आकर्षित कर सकते हैं।

संबंधित मुद्दे