Suponiendo que tengo un lienzo WebGL (llamando a getContext ("experimental-webgl")).Contexto del lienzo del conmutador
¿Hay alguna manera de cambiar el contexto más adelante para usar un "2d"?
El objetivo de tal cosa sería mostrar un BSOD de tipo de depuración cuando ocurre un error durante la representación.
Si no es posible, entonces:
- puedo incrustar un elemento HTML en un lienzo, y la fuerza de este elemento a tener exactamente el mismo, la misma que el lienzo (aunque este último se cambia el tamaño)?
- ¿Puedo reemplazar un nodo dom y actualizar cada referencia sobre el antiguo para reflejar el cambio?
[edit] Este es mi código de llamada mínima actual. Canvas es un nodo DOM que contiene un lienzo que se llena con la API WebGL, y la devolución de llamada es una función que procesa un único fotograma.
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);
}
}
¿Puedes publicar un código real para que tengamos una idea de cómo responder a esta pregunta correctamente y no solo con "sí"? –
Hecho, intenté mantener solo las partes relevantes del código. –