纹理数组在WebGL中发送到着色器的问题

时间:2013-11-07 06:19:05

标签: javascript arrays textures webgl shader

我真的不知道我需要做些什么才能修复代码 - 我试图通过着色器将颜色信息从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>

0 个答案:

没有答案