首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >现代派: WebGL和WebGL争论的测试

现代派: WebGL和WebGL争论的测试
EN

Stack Overflow用户
提问于 2016-06-09 19:36:21
回答 1查看 288关注 0票数 1

我在我的网页上使用THREE.js场景和图形对象。我知道,至少THREE.js利用WebGL

我想利用现代化来检查当前浏览器与WebGL的兼容性,如果浏览器没有,则向用户提示一条消息。

当选择浏览器特性进行现代化测试时,我看到两个与我的目标相关的特性

WebGL :在浏览器中检测WebGL。

WebGl扩展:在WebGL中检测对OpenGL扩展的支持。如果支持true扩展API,则将支持的扩展公开为子属性,例如:

因此,为了使THREE.js工作,我需要测试WebGL扩展WebGLWebGL还是简单地只测试WebGL

EN

回答 1

Stack Overflow用户

发布于 2016-06-09 23:41:42

这取决于您是否使用需要扩展的特性。Three.js本身不需要任何扩展。某些事情,如阴影,可能运行更快,如果您的WEBGL_depth_texture扩展。

如果你不知道你自己需要什么扩展,可以考虑插入一些代码来隐藏它们,看看你的应用程序是否还在运行。

示例:

代码语言:javascript
运行
复制
// disable all extensions

WebGLRenderingContext.prototype.getExtension = function() {
  return null;
}
WebGLRenderingContext.prototype.getSupportedExtensions = function() {
  return [];
}

// now init three.js

如果您想要允许特定的扩展,您可以这样做

代码语言:javascript
运行
复制
var allowedExtensions = [
  "webgl_depth_texture",
  "oes_texture_float",
];

WebGLRenderingContext.prototype.getExtension = function(origFn) {
  return function(name) {
    if (allowedExtensions.indexOf(name.ToLowerCase()) >= 0) {
      return origFn.call(this, name);
    }
    return null;
  };
}(WebGLRenderingContext.prototype.getExtension);

WebGLRenderingContext.prototype.getSupportedExtensions = function(origFn) {
  return function() {
    return origFn.call(this).filter(function(name) {
      return allowedExtensions.indexOf(n) >= 0;
    });
  };
}(WebGLRenderingContext.prototype.getSupportedExtensions);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37734756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档