假设我有一个WebGL画布(通过调用getContext("experimental-webgl")).
有没有办法在以后使用"2d"切换上下文?
这样的事情的目标是在渲染期间发生错误时显示类似调试BSOD.
如果不可能,那么:
[编辑]这是我目前的最小呼叫代码.Canvas是一个包含由WebGL API填充的画布的DOM节点,而回调是一个处理单个帧的函数.
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);
}
}
Run Code Online (Sandbox Code Playgroud)