Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查Dart中的WebGL支持_Webgl_Dart - Fatal编程技术网

检查Dart中的WebGL支持

检查Dart中的WebGL支持,webgl,dart,Webgl,Dart,我正在玩WebGL和Dart,我不知道如何检查某个对象是否有特定的方法。例如,在JavaScript中,我会检查WebGL是否可用于window.WebGLRenderingContext,但Dart中是否有相同的方法?IIRC Dart的目标之一是规范化浏览器定义内容的不一致性。因此,WebGL将始终“可用”,因为它的接口将始终存在于Dart中,无论您运行的浏览器是否以本机方式定义 WebGL是否受支持的最佳检查方法可能与Javascript中的检查方法相同: WebGLRenderingCo

我正在玩WebGLDart,我不知道如何检查某个对象是否有特定的方法。例如,在JavaScript中,我会检查WebGL是否可用于
window.WebGLRenderingContext
,但Dart中是否有相同的方法?

IIRC Dart的目标之一是规范化浏览器定义内容的不一致性。因此,WebGL将始终“可用”,因为它的接口将始终存在于Dart中,无论您运行的浏览器是否以本机方式定义

WebGL是否受支持的最佳检查方法可能与Javascript中的检查方法相同:

WebGLRenderingContext gl = canvas.getContext("experimental-webgl");
如果
gl
为空,则不支持WebGL。否则就是


(顺便说一句:仅仅因为Javascript中存在
window.WebGLRenderingContext
并不意味着支持WebGL!这只是告诉您浏览器能够调度WebGL命令。您正在运行的系统可能不接受这些命令。仍然最好尝试创建上下文并在失败时检测。)

编辑:顺便说一下,有一种快速初始化WebGL上下文的方法:

RenderingContext gl=canvas.getContext3d();
如果(gl==null){
打印(“WebGL:初始化失败”);
}
旧答案:

WebGLRenderingContext gl=canvas.getContext(“实验性webgl”);
如果(gl==null){
打印(“不支持WebGL”);
返回;
}
当我在下打开“禁用WebGL”时,该代码在Chrome JavaScript控制台上打印“WebGL不受支持”chrome://flags/.

但是,如果在Firefox下禁用WebGL(about:config->WebGL.disabled;true),则会在Web控制台上产生错误:

NS_错误\u失败:组件返回的失败代码:0x80004005(NS_错误\u失败)[nsidomhtmlcanvaseElement.getContext]


编辑:这是Firefox的修复错误:

您在这里问了两件事。Toji回答“如何正确检测WebGL在机器上工作”,这实际上不是Dart特有的问题。你的第二个问题更微妙:“在Dart中,我可以通过检查对象是否有特定的方法来进行特征检测吗?”答案是否定的。在Dart中,类是在编译时定义的,API是固定的。