我真的不知道我需要做些什么才能修复代码 - 我试图通过着色器将颜色信息从javascript发送到webgl-我有一个显示程序 - 我基本上想要(此时)能够将我的着色器打印到屏幕上,但它显示为黑色:/
在javascript中:
var table = [];
for (var y = 0.1; y<1; y+=.1) {
for (var x = 0.1; x<1; x+=.1) {
var u = x;
var u2 = y;
u += u2 * 0.003921568627451;
u *= 4.0;
var sig = .25;//1/(Math.exp(2.0 *(u-3)) + 1);
table.push(sig);
table.push(sig);
table.push(sig);
table.push(sig);
count+=4;
}
}
和
gl.activeTexture(gl.TEXTURE2);
texturetab = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texturetab);
gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 100, 1, 0,
gl.RGBA, gl.FLOAT, new Float32Array(table));
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.useProgram(prog_show);
gl.uniform1i(gl.getUniformLocation(prog_show, "uTexSamp"), 1);
gl.uniform1i(gl.getUniformLocation(prog_show, "uTabSamp"), 2);
顶点着色器:
attribute vec3 aPos;
attribute vec2 aTexCoord;
varying vec2 vTexCoord;
void main(void) {
gl_Position = vec4(aPos, 1);
vTexCoord = aTexCoord;
}
Frag Shader:
uniform sampler2D uTabSamp;
const float d = 0.001953125;
void main(void) {
//code condensed to this, to save space
gl_FragColor = texture2D(uTabSamp, vec2( .0/10., .5/10.));
}
很抱歉,如果我听起来像一个菜鸟,但我真的不知道我应该检查什么或我应该从哪里去 - 我已经做了太多的试验和错误,此时我已经想到它太低效和耗时 - 所以我不妨理解我在做什么 - 我理解WebGL所做的理论,它只是实现很难掌握 - 特别是当每一件小事都搞乱你的整个实现时。 / p>