1

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

//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 而不会出现问题,但不能传递数组。有人可以指出我正确的方向吗?

4

1 回答 1

2

这是我将浮点数组传递给片段着色器的方式:

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);

在着色器中:

uniform float params[3];
于 2013-05-31T15:51:43.130 回答