浅谈Three.js源码-render之WebGLShader.js
2017-07-04 11:21
459 查看
/** * @author mrdoob / http://mrdoob.com/ */ /* * 此脚本为创建着色器并进行编译的相关脚本。着色器(shader)分为顶点着色器和片元着色器, * 这里送上一篇大神写的详解吧,链接:http://blog.csdn.net/lufy_legend/article/details/38342919。 * * 2.*/ function addLineNumbers( string ) {//以换行符为标志对字符串加行号并换行的方法 var lines = string.split( '\n' ); for ( var i = 0; i < lines.length; i ++ ) { lines[ i ] = ( i + 1 ) + ': ' + lines[ i ]; } return lines.join( '\n' ); } //gl为WebGL上下文, //type的取值有两个:gl.VERTEX_SHADER(顶点着色器)和gl.FRAGMENT_SHADER(片源着色器) //string为着色器中运行的代码 function WebGLShader( gl, type, string ) { var shader = gl.createShader( type );//创建着色器 gl.shaderSource( shader, string );//将运行的代码与着色器进行绑定 gl.compileShader( shader );//对着色器代码进行编译 if ( gl.getShaderParameter( shader, gl.COMPILE_STATUS ) === false ) {//如果编译失败,则直接弹出错误提示 console.error( 'THREE.WebGLShader: Shader couldn\'t compile.' ); } if ( gl.getShaderInfoLog( shader ) !== '' ) {//如果编译过程报错,则打印错误信息 console.warn( 'THREE.WebGLShader: gl.getShaderInfoLog()', type === gl.VERTEX_SHADER ? 'vertex' : 'fragment', gl.getShaderInfoLog( shader ), addLineNumbers( string ) ); } // --enable-privileged-webgl-extension // console.log( type, gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) ); return shader; } export { WebGLShader };
相关文章推荐
- 浅谈Three.js源码-render之WebGLState.js(重要)
- 浅谈Three.js源码-render之WebGLGeometries.js
- 浅谈Three.js源码-render之WebGLExtensions.js
- 浅谈Three.js源码-render之WebGLAttributes.js
- 浅谈Three.js源码-render之WebGLBackground.js
- 浅谈Three.js源码-render之WebGLCapabilities.js
- 浅谈Three.js源码-render之WebGLLights.js
- 浅谈Three.js源码-render之SpritePlugin.js
- three.js(七) 绘制到WebGLRenderTarget
- WebGL之Three.js开发第一个场景(含源码)
- WebGL+Threejs阴影与画质提升,提…
- three.js 源码注释(一)./Three.js
- three.js 源码注释(七十三)extras/geometries/TextGeometry.js
- webGL之three.js入门3--材料篇
- three.js 源码注释(八十三)extras/geometries/TorusKnotGeometry.js
- three.js 源码注释(十七)Math/Math.js
- three.js 源码注释(九十四)extras/core/Shape.js
- WebGL框架比较之Three.js和Babylon.js的比较
- three.js 源码注释(十九)Math/Spline.js
- 利用HTML5构筑物理模拟环境~ WebGL库Three.js入门(1/3)