Bac*_*alo 37 javascript webgl three.js html5-canvas
任何使用过three.js的人都可以告诉我是否有可能检测到webgl支持,如果不存在,可以回退到标准的Canvas渲染吗?
Jua*_*ado 61
是的,这是可能的.你可以用CanvasRenderer而不是WebGLRenderer.
关于WebGL检测:
1)阅读此WebGL wiki文章:http://www.khronos.org/webgl/wiki/FAQ
if (!window.WebGLRenderingContext) {
// the browser doesn't even know what WebGL is
window.location = "http://get.webgl.org";
} else {
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("webgl");
if (!context) {
// browser supports WebGL but initialization failed.
window.location = "http://get.webgl.org/troubleshooting";
}
}
Run Code Online (Sandbox Code Playgroud)
2) Three.js已经有一个WebGL检测器:https: //github.com/mrdoob/three.js/blob/master/examples/js/Detector.js
renderer = Detector.webgl? new THREE.WebGLRenderer(): new THREE.CanvasRenderer();
Run Code Online (Sandbox Code Playgroud)
3)检查Modernizr探测器:https: //github.com/Modernizr/Modernizr/blob/master/feature-detects/webgl.js
Abt*_*deh 12
Juan Mellado指向Three.js探测器的指针非常实用,但我不想将整个文件放入我的项目中.所以这里是提取的Detector.webgl()函数.
function webglAvailable() {
try {
var canvas = document.createElement("canvas");
return !!
window.WebGLRenderingContext &&
(canvas.getContext("webgl") ||
canvas.getContext("experimental-webgl"));
} catch(e) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
它的使用类似于他的例子:
renderer = webglAvailable() ? new THREE.WebGLRenderer() : new THREE.CanvasRenderer();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28677 次 |
| 最近记录: |