我正在尝试将数组传递给片段着色器:
//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而不会出现问题。有人能指出我正确的方向吗?
答案 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];