Giả sử rằng tôi có canvas WebGL (bằng cách gọi getContext ("thí nghiệm-webgl")).Chuyển ngữ cảnh canvas
Có cách nào để chuyển ngữ cảnh sau này để sử dụng "2d" không?
Mục tiêu của việc như vậy sẽ là hiển thị lỗi gỡ lỗi BSOD khi xảy ra lỗi trong khi hiển thị.
Nếu đó là không thể, sau đó:
- Tôi có thể nhúng một yếu tố html trên một canvas, và buộc yếu tố này có giống hệt nhau giống như vải (ngay cả khi cuối cùng này được thay đổi kích cỡ)?
- Tôi có thể thay thế nút dom và cập nhật mọi tham chiếu về nút cũ để phản ánh thay đổi không?
[sửa] Đây là mã cuộc gọi tối thiểu hiện tại của tôi. Canvas là một nút DOM chứa canvas được lấp đầy bởi API WebGL và gọi lại là một hàm xử lý một khung duy nhất.
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);
}
}
Bạn có thể đăng một số mã thực tế để chúng tôi có ý tưởng cách trả lời đúng câu hỏi này và không chỉ với "có" không? –
Điều đó đã hoàn tất, tôi đã cố gắng chỉ giữ các phần mã có liên quan. –