WebGLExtensions.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /**
  2. * @author mrdoob / http://mrdoob.com/
  3. */
  4. function WebGLExtensions( gl ) {
  5. var extensions = {};
  6. return {
  7. get: function ( name ) {
  8. if ( extensions[ name ] !== undefined ) {
  9. return extensions[ name ];
  10. }
  11. var extension;
  12. switch ( name ) {
  13. case 'WEBGL_depth_texture':
  14. extension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );
  15. break;
  16. case 'EXT_texture_filter_anisotropic':
  17. extension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );
  18. break;
  19. case 'WEBGL_compressed_texture_s3tc':
  20. extension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );
  21. break;
  22. case 'WEBGL_compressed_texture_pvrtc':
  23. extension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );
  24. break;
  25. default:
  26. extension = gl.getExtension( name );
  27. }
  28. if ( extension === null ) {
  29. console.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );
  30. }
  31. extensions[ name ] = extension;
  32. return extension;
  33. }
  34. };
  35. }
  36. export { WebGLExtensions };