假设我有一个WebGL画布(通过调用getContext(“experimental-webgl”))。切换画布上下文
有没有什么方法可以在以后使用“2d”切换上下文?
这样的事情的目标是在渲染过程中发生错误时显示调试蓝屏。
如果这是不可能的,那么:
- 我可以嵌入HTML元素在画布上,并迫使该元素具有完全相同的一样,在画布(即使这最后的调整大小)?
- 我可以替换一个DOM节点,并更新每一个关于旧的参考来反映这个变化吗?
这是我目前的最小调用代码。 Canvas是一个DOM节点,其中包含一个由WebGL API填充的画布,回调函数用于处理单个框架。
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);
}
}
你能发表一些实际的代码,所以我们得到一个想法如何正确回答这个问题,而不仅仅是“是”? –
这样做了,我试着只保留代码的相关部分。 –