这里是我的顶点和片段着色器:
<script id="shader-fs" type="x-shader/x-fragment"> precision mediump float; uniform sampler2D uSampler; varying vec4 vColor; varying vec2 vTextureCoord; void main(void) { gl_FragColor = vColor; // gl_FragColor = texture2D(uSampler,vec2(vTextureCoord.s,vTextureCoord.t)); } </script> <script id="shader-vs" type="x-shader/x-vertex"> attribute vec3 aVertexPosition; attribute vec4 aVertexColor; attribute vec2 aTextureCoord; uniform mat4 uMVMatrix; uniform mat4 uPMatrix; varying vec4 vColor; varying vec2 vTextureCoord; void main(void) { gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition,1.0); vColor = aVertexColor; // vTextureCoord = aTextureCoord; } </script>
这是我的着色器初始化器:
function initShaders() { var fragmentShader = getShader(gl,"shader-fs"); var vertexShader = getShader(gl,"shader-vs"); shaderProgram = gl.createProgram(); gl.attachShader(shaderProgram,vertexShader); gl.attachShader(shaderProgram,fragmentShader); gl.linkProgram(shaderProgram); if (!gl.getProgramParameter(shaderProgram,gl.LINK_STATUS)) { alert("Could not initialise shaders"); } gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram,"aVertexPosition"); gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.vertexColorAttribute = gl.getAttribLocation(shaderProgram,"aVertexColor"); gl.enableVertexAttribArray(shaderProgram.vertexColorAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram,"aTextureCoord"); gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.pMatrixUniform = gl.getUniformLocation(shaderProgram,"uPMatrix"); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram,"uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram,"uSampler"); }
错误来自这一行:
gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); >> enablevertexattribarray index out of range
我该如何处理?