无法将统一的float数组传递给片段着色器

时间:2013-03-02 14:44:51

标签: c++ opengl glsl shader uniform

我正在尝试将数组传递给片段着色器:

//c++ code
float filter[9] = {-1.0f,-1.0f,-1.0f, -1.0f,9.0f,-1.0f, -1.0f,-1.0f,-1.0f};           
glUniform1fv(glGetUniformLocation(imageShaderId, "filter"), 9, filter);


//inside fragment shader code
uniform float filter[9]; //global
if(filter[0]==-1.0) gl_FragColor = red;//in main()

这对我不起作用..我看了很多例子,似乎都指出我的代码是正确的?我可以使用glUniform1f而不是数组传递单个变量float而不会出现问题。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:2)

以下是我将float数组传递给片段着色器的方法:

C ++

GLfloat params[3];
params[0] = 2.0f;
params[1] = 1.0f;
params[2] = 1.0f;

colorRampUniformLocation = glGetUniformLocation(glprog->getProgram(), "params");
glUniform1fv(colorRampUniformLocation, 3, params);

在Shader中:

uniform float params[3];