2016-06-09 87 views
0

我在我的網頁上使用THREE.js場景和圖形對象。我知道,至少,THREE.js利用WebGLModernizr:測試WebGL vs WebGL Exentions

我想利用Modernizr的WebGL的檢查兼容性當前的瀏覽器,如果瀏覽器不擁有它,提示信息給用戶。

當選擇browser featuresModernizr的測試,我看到與我的目標

WebGL的兩個特點:在瀏覽器中檢測到對WebGL的。

WebGl擴展檢測WebGL中對OpenGL擴展的支持。這是true如果WebGL的擴展API支持,則暴露了支持的擴展作爲子,如:

因此,爲了使three.js所工作,做我需要測試WebGL的一些推廣的WebGL只需WebGL

回答

2

這取決於您是否使用需要擴展功能的功能。 Three.js本身不需要任何擴展。如果您的擴展名爲WEBGL_depth_texture,某些事情(如陰影)可能運行得更快。

如果你不知道什麼信息,您個人需要考慮插入一些代碼來隱藏他們,看看您的應用程序仍然運行

例子:

// disable all extensions 

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

// now init three.js 

如果你想允許特定的擴展你可以做這樣的事情

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);