2011-12-11 12 views

Respuesta

10

Necesita un lienzo por separado. Puedes poner el otro lienzo sobre el primero, esto no se considera una mala práctica.

+0

Podría ser relevante saber que algunos navegadores no implementan la composición del lienzo WebGL y los elementos circundantes de una manera muy eficiente (es decir, tomar la imagen de OpenGL y luego componerla en la CPU, y luego enviarla de vuelta a la GPU), y dependiendo de qué tan complicado sea el material en 2D que está tratando de hacer (es decir, simplemente dibujar algunos mapas de bits para la GUI), también podría valer la pena considerar hacerlo a través del lienzo de WebGL. Dibujar cosas 2D en WebGL debería simplemente ser una cuestión de configurar las transformaciones correctas y quizás deshabilitar las pruebas de profundidad – aphax

9

No puede usar contextos múltiples para un elemento canvas. En WebKit, esto se menciona explícitamente in the source:

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

Si haces pedir otro contexto, se obtiene null:

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

(Así que si usted solicitar un contexto 3D cuando ya tiene otro contexto que, obtenga null.)

Lo que probablemente quiera son dos elementos de lienzo, uno para cosas en 3D y el otro para cosas en 2D. Si los coloca uno encima del otro, actúan como dos capas, y puede dibujar en cada lienzo de forma independiente.

Cuestiones relacionadas