在将位图图像绘制到离屏画布上时,Chrome控制台向我抛出一个错误:
无法在“OffscreenCanvas”上执行“getContext”:提供的值“bitmaprenderer”不是OffscreenRenderingContextType类型的有效枚举值。
在工作上下文和窗口上下文中均出现问题:
var img = new Image(63, 177);
img.src = "https://cdn.sstatic.net/Img/unified/sprites.svg";
img.onload = _ => {
createImageBitmap(img).then(bitmap => {
var canvas = new OffscreenCanvas(bitmap.width, bitmap.height);
canvas.getContext('bitmaprenderer');
}).catch(e => console.error(e.message));
};
我可以在窗口上下文中获得这个canvas上下文类型,同时使用(屏幕上)canvas界面,如下所示:
document.createElement('canvas').getContext('bitmaprenderer');
在worker中需要canvas上下文,所以我不能使用(屏幕上)canvas界面,毕竟没有文档访问。
虽然我可以在getContext方法中使用'2d'标识符来获取位图图像的二维渲染上下文,但它将是OffscreenCanvasRenderingContext2D而不是ImageBitmapRenderingContext。我不知道两个接口的延迟差异,但据我所知,位图可以立即传输到画布上,而2d上下文应该绘制。
我的Chrome版本是74.0.3729.169,linked article浏览器兼容表规定,位图渲染上下文接口从66版本开始可用。
是我做错了什么,还是bitmaprenderer目前不支持作为屏幕外画布渲染上下文的有效值?如何在Chrome中访问屏幕外画布的位图渲染上下文?提前感谢。
1条答案
按热度按时间dy1byipe1#
是的,在这个问题被问到的时候,ImageBitmapRenderingContext仍然不能从
OffscreenCanvas
中获得,现在它只是Chrome has a bug,这阻止了它渲染到占位符画布。请注意,如果您想使用这个位图渲染器,例如能够将其绘制到另一个上下文,那么您可以直接将
ImageBitmap
传递给2D drawImage或webgltexImage2d
。还要注意,在您的例子中,由于您在主线程中,而不是在
Worker
中,因此您绝对不需要OffscreenCanvas
,只需执行