three
Version:
JavaScript 3D library
64 lines (36 loc) • 1.46 kB
JavaScript
function WebGLExtensions( gl ) {
const extensions = {};
return {
has: function ( name ) {
if ( extensions[ name ] !== undefined ) {
return extensions[ name ];
}
let extension;
switch ( name ) {
case 'WEBGL_depth_texture':
extension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );
break;
case 'EXT_texture_filter_anisotropic':
extension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );
break;
case 'WEBGL_compressed_texture_s3tc':
extension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );
break;
case 'WEBGL_compressed_texture_pvrtc':
extension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );
break;
default:
extension = gl.getExtension( name );
}
extensions[ name ] = extension;
return !! extension;
},
get: function ( name ) {
if ( ! this.has( name ) ) {
console.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );
}
return extensions[ name ];
}
};
}
export { WebGLExtensions };