2d上下文是否被视为;webgl编码“;

2d上下文是否被视为;webgl编码“;,webgl,openlayers-3,Webgl,Openlayers 3,当我编写代码时,如下所示: var x = document.createElement("canvas"); var ctx = x.getContext("2d"); -------- -------- var canvas = document.createElement('canvas'); var gl = canvas.getContext('experimental-webgl'); -------- -------- 当我编写如下代码时: var x = document.c

当我编写代码时,如下所示:

var x = document.createElement("canvas");
var ctx = x.getContext("2d");
--------
--------
var canvas = document.createElement('canvas');
var gl = canvas.getContext('experimental-webgl');
--------
--------
当我编写如下代码时:

var x = document.createElement("canvas");
var ctx = x.getContext("2d");
--------
--------
var canvas = document.createElement('canvas');
var gl = canvas.getContext('experimental-webgl');
--------
--------
a) 在以上两种中,是否都将在GPU中运行

b) 两者都被视为Webgl编码???

是否使用GPU加速的“2d”或“Webgl”取决于浏览器和操作系统

例如,它将完全由软件呈现

一般来说,WebGL上下文几乎总是GPU加速的,取决于2d上下文。我知道曾经有一段时间,在一定尺寸下的2d环境在Chrome中不是GPU加速的,因为对于绘制小东西,软件通常比GPU加速快。这是否仍然是真的,我不知道,但关键是,这取决于浏览器和/或操作系统


二维上下文不是“webgl”编码

这两个代码很可能是gpu加速的(尽管第一个可能是在旧浏览器上的cpu渲染)。只有第二个是webgl,它公开了与第一个不同的函数集。我有一个用“2d”编写的代码,我希望它在“实验webgl”中运行。如何使用/转换二维代码到webgl,因为我想在GPU中运行我的代码。2d和webgl上下文有非常不同的API(和不同的用途),所以没有简单的方法来翻译代码。但是,在现代浏览器上,默认情况下2d画布是gpu加速的。看看这个:谢谢弗朗索瓦的快速回复!我执行chrome://gpu/ 在我的浏览器上找到:“Canvas:Hardware accelerated”,这意味着我的2d上下文代码也将在GPU中运行,对吗?(不需要webgl上下文)可以将2d画布移植到webgl纹理。这是一个很好的组合方式,谢谢你的回答。您能告诉我如何直观地检查/验证代码是否在GPU或CPU上运行吗?您可以在chrome中转到
about:GPU
并进行检查,但它不会告诉您是否始终使用GPU加速,除非它可以。换句话说,即使“关于:gpu”说Canvas2D是gpu加速的,但这并不意味着chrome总是使用gpu加速。请参见上面关于小环境未被加速的示例(至少在过去)。对于WebGL,您还可以尝试将
{failIfMajorPerformanceCaveat:true}
作为
getContext
的第二个参数传递,在这种情况下,如果是软件渲染,则可能会失败。当然,如果没有webgl,它也会失败,因此您可能需要创建2个上下文。