glsl - 乘以采样器查找 glsl

标签 glsl

我将一个一维数组作为sampler1D 和一个二维数组(基本上是一个矩阵)作为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 .. 任何东西时都不起作用/起作用)

    uniform sampler1D xk;
    uniform sampler2D eigenraum;
    varying float colorcheck;
    void main(){
       vec4 f = texture1D(xk,0);
       vec4 H = texture2D(eigenraum,vec2(0,0));
       colorcheck=f[0]*H[0];
       gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
   }

和片段着色器:

varying float colorcheck;
void main()
{
    gl_FragColor=vec4(colorcheck,1,1,1.0);
}

感谢您的帮助!

EDIT2 - 事实证明我也无法减去/添加它们..

最佳答案

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

关于glsl - 乘以采样器查找 glsl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11059226/

相关文章:

c++ - OpenGL 用四边形填充平截头体

opengl - 我可以在 GLSL 着色器中使用 if else 吗?

opengl - 是否有 acos() 函数的精确近似值?

c++ - 将倒置场景渲染到帧缓冲区

c++ - 球体的 OpenGL UV 贴图(有接缝)

opengl - 在 GLSL 中混合多个纹理

android - OpenGL ES 着色器降低太多性能

java - OpenGL绘制三角形不显示+ glClearColor不设置屏幕颜色

c++ - 基于uniform int在GLSL中声明数组

opengl - glBlendFunc 禁用着色器