Zakładając, że mam płótno WebGL (przez wywołanie getContext ("experimental-webgl")).Przełącz kontekst płótna
Czy istnieje jakiś sposób na zmianę kontekstu później w przypadku używania "2d"?
Celem takiego działania byłoby wyświetlanie debugowania w stylu BSOD, gdy wystąpi błąd podczas renderowania.
Jeśli nie jest to możliwe, a następnie:
- mogę osadzić element HTML na płótnie, i zmusić ten element, aby mieć dokładnie takie same same, że płótno (nawet jeśli ten ostatni jest zmieniany)?
- Czy mogę zastąpić węzeł dom i zaktualizować każdą referencję o starej, aby odzwierciedlić zmianę?
[edytuj] To jest mój obecny minimalny kod wywoławczy. Canvas to węzeł DOM zawierający obszar roboczy, który jest wypełniany przez interfejs API WebGL, a wywołanie zwrotne to funkcja przetwarzająca pojedynczą ramkę.
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);
}
}
Czy możesz zamieścić jakiś aktualny kod, aby uzyskać prawidłowy sposób odpowiedzi na to pytanie, a nie tylko odpowiedź "tak"? –
Tak się stało, próbowałem zachować tylko odpowiednie części kodu. –