假設我有一個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);
}
}
你能發表一些實際的代碼,所以我們得到一個想法如何正確回答這個問題,而不僅僅是「是」? –
這樣做了,我試着只保留代碼的相關部分。 –