не может передать равномерный массив float фрагментному шейдеру

Я пытаюсь передать массив фрагментному шейдеру:

//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, но не массив. Может ли кто-нибудь указать мне правильное направление?

1

Решение

Вот как я передал массив 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);

В шейдере:

uniform float params[3];
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]