Supponendo di avere una tela WebGL (chiamando getContext ("experimental-webgl")).Cambia contesto canvas
C'è un modo per cambiare contesto successivamente per usare uno "2d"?
L'obiettivo di tale operazione sarebbe quello di visualizzare un debug simile a BSOD quando si verifica un errore durante il rendering.
Se non è possibile, allora:
- Posso incorporare un elemento HTML su una tela, e la forza di questo elemento per avere esattamente la stessa stessa che la tela (anche se quest'ultimo viene ridimensionato)?
- Posso sostituire un nodo dom e aggiornare ogni riferimento a quello vecchio per riflettere la modifica?
[modifica] Questo è il mio attuale codice di chiamata minimo. Canvas è un nodo DOM contenente una tela che viene riempita dall'API WebGL e callback è una funzione che elabora un singolo frame.
function failure(cvs, e) {
var ctx = cvs.getContext('2d'); // Fail here, returns `null' if cvs.getContext('webgl') has been called
ctx.fillStyle = 'rgb(0, 0, 0)';
ctx.fillRect(0, 0, cvs.width, cvs.height);
ctx.fillStyle = 'rgb(255, 255, 255)';
ctx.font = 'bold 12px sans-serif';
ctx.fillText(e.toString(), 0, 0);
}
function foobar(canvas, callback) {
try {
callback();
} catch (e) {
failure(canvas, e);
throw e;
} finally {
requestAnimationFrame(arguments.callee);
}
}
Puoi pubblicare del codice effettivo in modo da avere un'idea di come rispondere correttamente a questa domanda e non solo con "sì"? –
Fatto, ho cercato di mantenere solo parti rilevanti del codice. –