webgl中的颜色处理

webgl中的颜色处理,webgl,jsfiddle,Webgl,Jsfiddle,我有一个WebGL示例,它在本地很好地工作,但我不能让它在一个小提琴中工作 它可以与此修改的着色器配合使用: precision mediump float; varying vec4 vColor; void main(void) { /* gl_FragColor = vColor; */ gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0); } 所以很明显我的颜色有问题 我给他们设定了这样的目标: gl.bindBuffer (gl.ARRAY

我有一个WebGL示例,它在本地很好地工作,但我不能让它在一个小提琴中工作

它可以与此修改的着色器配合使用:

precision mediump float;
varying vec4 vColor;
void main(void) {
/*
    gl_FragColor = vColor;
*/
    gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
}
所以很明显我的颜色有问题

我给他们设定了这样的目标:

gl.bindBuffer (gl.ARRAY_BUFFER, triangleVertexColorBuffer);
gl.vertexAttribPointer (shaderProgram.vertexColorAttribute,triangleVertexColorBuffer.itemSize,gl.FLOAT,false,0,0);
在此之前,我将缓冲区设置为:

triangleVertexColorBuffer=gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER,triangleVertexColorBuffer); 
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(colors),gl.STATIC_DRAW);

triangleVertexColorBuffer.itemSize=4;
triangleVertexColorBuffer.numItems=colors.length / 4;
颜色是一个标准的javascript数组

这是


除了知道出了什么问题外,我还想知道是否有某种技术可以跟踪webgl内部发生的情况,检查问题所在。

最后我找到了问题所在

纠正小提琴:

问题就在这里

shaderProgram.vertexColorAttribute=gl.getAttribLocation(shaderProgram,"aVertexColor");
gl.enableVertexAttribArray(shaderProgram.vertexColorAttribute);

为了跟踪正在发生的事情,有一个Chrome WebGL检查器,来自。它不会真正显示发生了什么,而只是显示了发生了什么:它不是一个调试器,而是显示了WebGL数据在每一时刻的状态

非常好!不是说我理解它(还没有),但看起来很有希望!