OffscreenCanvas 对 2d context 的支持情况如何?
What's the state of OffscreenCanvas's support for 2d context?
我是网络开发的新手,所以这可能是个愚蠢的问题。如果已经回答,请告诉我:)
根据 OffscreenCanvas
的 MDN web docs' page,目前 API 仅支持 WebGL 上下文。 (也许这只是意味着 worker 对 OffscreenCanvas
' 2d context 的支持没有实现,但我们仍然可以在主线程上使用它?)
Note: This API is currently implemented for WebGL1 and WebGL2 contexts
only. See bug 801176 for Canvas 2D API support from workers.
但是当我为 OffscreenCanvas
读取 the HTML Specs 时,支持 2d 上下文。
enum OffscreenRenderingContextType { "2d", "webgl" };
我怀疑第二个只是OffscreenCanvas
应该支持的提议,第一个是实际支持的。我的理解正确吗?如果是这样,我怎么知道特定浏览器是否支持 OffscreenCanvas
的 2d 上下文,例如 Chromium?
更让我困惑的是人们将常规 canvas
称为 offscreenCanvas
,并从中获取二维上下文 (example1, )。但我认为在这种情况下,除了我喜欢研究的 OffscreenCanvas
之外,他们只是指未附加到 DOM 的常规 canvas。
I suspect the second one is only a proposal for what OffscreenCanvas
should support, and the first is what is actually supported. Is my understanding correct?
正确,WHATWG 规范是浏览器应该支持的标准。 Firefox 的错误 #801176 存在的原因是因为 Firefox 在这方面不符合 WHATWG 规范的要求。
What makes me even more confused is people called the regular canvas
an offscreenCanvas
这些只是称为 offscreenCanvas
的变量,其中包含一个正常的 canvas。你可以给你的变量起任何名字;这些作者为当前未在屏幕上呈现的 canvas 选择了一个描述性名称。
更新
看起来 OffscreenCanvas
将在 Chrome 69 或 Chrome 70 中发布,同时支持 2D 和 WebGL。至于图片,可以在worker里面使用fetch
和ImageBitmap
来下载图片。
可以看到how to use OffscreenCanvas
on MDN.
上一个回答
What's the state of OffscreenCanvas's support for 2d context?
OffscreenCanvas 支持尚未在 Firefox 或 Chrome 默认情况下在 Chrome 66 或 Firefox 59 中自 2018 年 4 月 30 日起发布。目前未在Chrome Canary 68 或 Firefox nightly,因此不太可能在接下来的几个月内启用。
My own tests 表明,如果您启用实验性支持,WebGL 可以在 Chrome 中工作,但不能在 Firefox 中工作,并且都不支持 2D 上下文。 2D 上下文更容易出现问题,因为规范必须更改。例如 ctx.drawImage(someImage, ...)
对 OffscreenCanvas
没有意义,因为 OffscreenCanvas
实际上是要在 worker 中使用,但在 worker 中没有 Images
,因为它们是 DOM 对象。 WebGL 部分解决了这个问题,因为有一些方法可以将纹理更新为不涉及图像的 WebGL。
整个问题实际上是一种猜测。如果您想知道 Firefox 或 Chrome 或 Safari 或 Edge 什么时候发布 OffscreenCanvas
并且支持 2d,您能做的最好的事情就是挖掘他们的错误跟踪器。我相信规范可能会改变,就像你在网上搜索一样,你会发现仍然有关于 OffscreenCanvas 应该如何工作以及涵盖 WebVR 和其他目前没有很好涵盖的案例的讨论。
我是网络开发的新手,所以这可能是个愚蠢的问题。如果已经回答,请告诉我:)
根据 OffscreenCanvas
的 MDN web docs' page,目前 API 仅支持 WebGL 上下文。 (也许这只是意味着 worker 对 OffscreenCanvas
' 2d context 的支持没有实现,但我们仍然可以在主线程上使用它?)
Note: This API is currently implemented for WebGL1 and WebGL2 contexts only. See bug 801176 for Canvas 2D API support from workers.
但是当我为 OffscreenCanvas
读取 the HTML Specs 时,支持 2d 上下文。
enum OffscreenRenderingContextType { "2d", "webgl" };
我怀疑第二个只是OffscreenCanvas
应该支持的提议,第一个是实际支持的。我的理解正确吗?如果是这样,我怎么知道特定浏览器是否支持 OffscreenCanvas
的 2d 上下文,例如 Chromium?
更让我困惑的是人们将常规 canvas
称为 offscreenCanvas
,并从中获取二维上下文 (example1, OffscreenCanvas
之外,他们只是指未附加到 DOM 的常规 canvas。
I suspect the second one is only a proposal for what
OffscreenCanvas
should support, and the first is what is actually supported. Is my understanding correct?
正确,WHATWG 规范是浏览器应该支持的标准。 Firefox 的错误 #801176 存在的原因是因为 Firefox 在这方面不符合 WHATWG 规范的要求。
What makes me even more confused is people called the regular
canvas
anoffscreenCanvas
这些只是称为 offscreenCanvas
的变量,其中包含一个正常的 canvas。你可以给你的变量起任何名字;这些作者为当前未在屏幕上呈现的 canvas 选择了一个描述性名称。
更新
看起来 OffscreenCanvas
将在 Chrome 69 或 Chrome 70 中发布,同时支持 2D 和 WebGL。至于图片,可以在worker里面使用fetch
和ImageBitmap
来下载图片。
可以看到how to use OffscreenCanvas
on MDN.
上一个回答
What's the state of OffscreenCanvas's support for 2d context?
OffscreenCanvas 支持尚未在 Firefox 或 Chrome 默认情况下在 Chrome 66 或 Firefox 59 中自 2018 年 4 月 30 日起发布。目前未在Chrome Canary 68 或 Firefox nightly,因此不太可能在接下来的几个月内启用。
My own tests 表明,如果您启用实验性支持,WebGL 可以在 Chrome 中工作,但不能在 Firefox 中工作,并且都不支持 2D 上下文。 2D 上下文更容易出现问题,因为规范必须更改。例如 ctx.drawImage(someImage, ...)
对 OffscreenCanvas
没有意义,因为 OffscreenCanvas
实际上是要在 worker 中使用,但在 worker 中没有 Images
,因为它们是 DOM 对象。 WebGL 部分解决了这个问题,因为有一些方法可以将纹理更新为不涉及图像的 WebGL。
整个问题实际上是一种猜测。如果您想知道 Firefox 或 Chrome 或 Safari 或 Edge 什么时候发布 OffscreenCanvas
并且支持 2d,您能做的最好的事情就是挖掘他们的错误跟踪器。我相信规范可能会改变,就像你在网上搜索一样,你会发现仍然有关于 OffscreenCanvas 应该如何工作以及涵盖 WebVR 和其他目前没有很好涵盖的案例的讨论。