浅谈Three.js源码-render之WebGLExtensions.js
2017-07-03 17:20
806 查看
/** * @author mrdoob / http://mrdoob.com/ */ //获取WebGL的扩展功能的脚本 /*WebGL 1.0对应的是OpenGL 2.0的标准,其中包括了各种扩展功能,得到对应扩展的API为 gl.getExtension( '扩展参数' ); 扩展功能比较多,开发人员可以去 https://www.khronos.org/registry/webgl/extensions/ 进行查阅。 */ function WebGLExtensions( gl ) { var extensions = {};//用来存储多种扩展功能对象的对象 return { get: function ( name ) {//获取对应扩展的方法 if ( extensions[ name ] !== undefined ) {//如果当前对象中已经有了对应拓展 return extensions[ name ];//直接将对应的功能进行返回 } var extension; switch ( name ) {//以下几种拓展是与浏览器的内核相关的,不同浏览器内核需要使用不同的参数进行使用。 /*相关拓展功能,笔者也有好多没有使用过,所以刚刚买了本OpenGL编程指南(第五版)对应OpenGL2.0标准, 回去研究一番。研究明白了,会以专题的形式更出来,不要说我偷懒QAQ。。。。*/ 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'://anisotropic纹理过滤器 extension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' ); break; /*s3tc、pvrtc、etc1都是压缩纹理的不同标准*/ 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; case 'WEBGL_compressed_texture_etc1': extension = gl.getExtension( 'WEBGL_compressed_texture_etc1' ); break; default: extension = gl.getExtension( name ); } 9f3c if ( extension === null ) { console.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' ); } extensions[ name ] = extension; return extension; } }; } export { WebGLExtensions };
相关文章推荐
- 浅谈Three.js源码-render之WebGLState.js(重要)
- 浅谈Three.js源码-render之WebGLAttributes.js
- 浅谈Three.js源码-render之WebGLBackground.js
- 浅谈Three.js源码-render之WebGLLights.js
- 浅谈Three.js源码-render之WebGLCapabilities.js
- 浅谈Three.js源码-render之WebGLGeometries.js
- 浅谈Three.js源码-render之WebGLShader.js
- 浅谈Three.js源码-render之SpritePlugin.js
- WebGL之Three.js开发第一个场景(含源码)
- three.js(七) 绘制到WebGLRenderTarget
- 浅谈three.js中的needsUpdate
- Three.js WebGL 绘制流程(一)
- Three.js源码阅读笔记(基础的核心Core对象)
- WebGL库Three.js入门
- Three.js源码阅读笔记
- Three.js源码阅读笔记-5
- HTML5画布WebGL,文件Three.js控制的锥
- Three.js源码阅读笔记(物体是如何组织的)
- Three.js源码阅读笔记(光照部分)
- Three.js讲解以及WEBGL实例