乘法取样器查找glsl

乘法取样器查找glsl,glsl,Glsl,我将1D数组作为sampler1D传递,将2D数组(基本上是矩阵)作为sampler2D传递给我的顶点着色器。 一切正常-我检查了值,每个值都在它应该在的地方。 但是,我似乎无法将这些采样器的两个值相乘 float pos=0.0; vec4 f = texture1D(xk,ki); vec4 H = texture2D(er,vec2(0,i)); pos=f[0]*H[0]; colorcheck=pos; 我将colorcheck传递给我的片段

我将1D数组作为sampler1D传递,将2D数组(基本上是矩阵)作为sampler2D传递给我的顶点着色器。 一切正常-我检查了值,每个值都在它应该在的地方。 但是,我似乎无法将这些采样器的两个值相乘

    float pos=0.0;
    vec4 f = texture1D(xk,ki);
    vec4 H = texture2D(er,vec2(0,i));

    pos=f[0]*H[0];
    colorcheck=pos;
我将colorcheck传递给我的片段着色器,但它不会渲染我的对象,相反,所有内容都是黑色的(传递colorcheck=1.0可以正常工作)。我在查找之后检查了这两个向量-它们在所有字段中都有有效值

我试过f.x*H.x和我能想到的所有组合。。我甚至尝试在片段着色器中进行乘法-也不起作用

编辑 简化顶点着色器(也不起作用/当我通过colorcheck=1.0/f.x/H.x..anything时起作用)

和片段着色器:

varying float colorcheck;
void main()
{
    gl_FragColor=vec4(colorcheck,1,1,1.0);
}
谢谢你的帮助


EDIT2-结果是我也不能减去/添加它们。

我找到了解决方案-它不在着色器代码中。我忘记了在将数组绑定到纹理时调用glActiveTexture

我找到了解决方案-它不在着色器代码中。我忘记了在将数组绑定到纹理时调用glActiveTexture

你能再加一点背景,然后发布一个完整的顶点和片段着色器对来展示这一点吗?如何验证f和H是否有效?colorcheck去哪里了?colorcheck是一个可变的浮点。在片段着色器中,它看起来像gl_FragColor=vec4(colorcheck,1,1,1);-因此,当值如预期的那样时,我只是说如果(f.x==0.5)colorcheck=1.0。颜色是白色的,应该是白色的(我调试着色器的方法,glslDevil不起作用。顶点着色器只是一个循环,应该乘以这些条目,我只是用colorcheck检查结果-片段着色器只是gl_FragColor=vec4(colorcheck,1,1,1);请在你的问题中加入真实的、完整的着色器。理论上,将两个数字相乘应该没有问题。因此,显然还有其他一些地方出了问题,可能是没有显示的地方。只是添加了着色器-顺便说一句,我可以用任意值乘/除f.x或H.x..只是不能彼此相乘。你能稍微加一点吗一个完整的顶点和片段着色器对展示了这一点?你如何验证f和H是有效的?colorcheck去哪里了?colorcheck是一个可变的浮点。在片段着色器中,它看起来像gl_FragColor=vec4(colorcheck,1,1,1);-所以当值如预期的那样时,我只是说如果(f.x==0.5)colorcheck=1.0。颜色是白色的,应该是白色的(我调试着色器的方式,glslDevil不起作用。顶点着色器只是一个循环,应该乘以这些条目,我只是用colorcheck检查结果-片段着色器只是gl_FragColor=vec4(colorcheck,1,1);请在你的问题中加入真实的、完整的着色器。理论上,将两个数字相乘应该没有问题。因此,很明显,其他一些东西肯定出了问题,可能是没有显示的东西。只是添加了着色器-顺便说一句,我可以用任意值乘/除f.x或H.x。只是不能彼此相乘。
varying float colorcheck;
void main()
{
    gl_FragColor=vec4(colorcheck,1,1,1.0);
}