GLSL 1.20: атрибут отправки вызывает ошибку сегментации

Мне нужно передать переменную атрибута в шейдер, чтобы знать, как вычислить gl_Position, Это значение должно отличаться для любого нарисованного объекта. Это декларация:

attribute int drawText;

По его значению я решаю, как рассчитать gl_Position, Это горячо, я передаю это в программе C ++:

// Pass some uniforms
GLint location= glGetAttribLocation(program_id, (char*)"drawText");
glEnableVertexAttribArray(location);
glVertexAttribI1i(location,1);
glutSolidCube(15);
glDisableVertexAttribArray(location);

Но я получаю ошибку сегментации. Я попытался прокомментировать строку, куда я отправляю атрибут (glVertexAttribI1i), и в этом случае программа не падает. В чем может быть проблема?

0

Решение

Целочисленные атрибуты вершин требуют OpenGL 3.0 и GLSL> = 1.30.

Может быть, вы используете GLEW? Вы должны проверить это (void*)(glVertexAttribI1i) != 0 перед его использованием.

Более того, когда атрибут имеет одинаковое значение для каждой вершины, как в опубликованном вами фрагменте, вы должны использовать униформу.

1

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

Убедитесь, что тип данных совпадает, или имя атрибута «drawText» является правильным.

0

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