2013-03-02 70 views
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,但不是数组。有人能指出我正确的方向吗?

+0

[GLSL的可能重复:使值的列表,以片段着色器(http://stackoverflow.com/questions/7954927/glsl-passing-a-list-of-values-to-fragment-shader) – 2013-03-02 22:46:00

回答

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]; 
相关问题