2011-12-11 10 views

risposta

10

È necessaria una tela separata. Puoi mettere l'altra tela sopra la prima, questa non è considerata una cattiva pratica.

+0

Potrebbe essere ancora importante sapere che alcuni browser non implementano il compositing della tela WebGL e degli elementi circostanti in un modo molto efficiente (cioè prendendo l'immagine da OpenGL e quindi compositing sulla CPU, quindi rimandandola indietro alla GPU) e, a seconda di quanto siano complicate le cose 2D che stai cercando di fare (cioè semplicemente disegnando alcune bitmap per la GUI), potrebbe valere la pena di farlo anche attraverso la tela WebGL. Disegnare materiale 2D in WebGL dovrebbe semplicemente essere una questione di impostazione delle giuste trasformazioni e forse disabilitazione del test di profondità – aphax

9

Non è possibile utilizzare più contesti per un elemento di tela. In WebKit, questo è esplicitamente menzionato in the source:

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

Se fate richiedere un altro contesto, si ottiene null:

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

(Quindi, se richiedere un contesto 3D quando si dispone già di un altro contesto di te, get null.)

Quello che vorresti è due elementi di canvas: uno per le cose 3D e l'altro per le cose 2D. Se li metti l'uno sull'altro, agiscono come due livelli e puoi disegnare su ciascuna tela indipendentemente.

Problemi correlati