相关疑难解决方法(0)

切换画布上下文

假设我有一个WebGL画布(通过调用getContext("experimental-webgl")).

有没有办法在以后使用"2d"切换上下文?

这样的事情的目标是在渲染期间发生错误时显示类似调试BSOD.

如果不可能,那么:

  • 我可以在画布上嵌入一个html元素,并强制该元素与画布完全相同(即使最后调整大小)?
  • 我可以替换dom节点,并更新有关旧节点的每个引用以反映更改吗?

[编辑]这是我目前的最小呼叫代码.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)

html javascript dom canvas webgl

7
推荐指数
1
解决办法
2533
查看次数

标签 统计

canvas ×1

dom ×1

html ×1

javascript ×1

webgl ×1