Пытаюсь написать простой геометрический шейдер.
Вертексный шейдер:
in vec4 vert;
void main(void) {
gl_Position = gl_ModelViewProjectionMatrix * (vert + vec4(-1,0,0,0));
}
И геометрический:
out vec4 vert;
void main(void) { int i;
for( i = 0; i < gl_in.length(); i++ )
{
vert = gl_in[i].gl_Position;
EmitVertex();
}
EndPrimitive();
}
Если в программу добавляю только вершинный, то все нормально, пара линий рисуется.
Если добавляю геометрический - ничего не происходит, то есть экран пустой.
Что я забыл сделать, чтобы этот шейдер успешно пропустил через себя все примитивы.
После аттача геометрического шейдера вызываю установку параметров:
glProgramParameteriEXT( shader_prog, GL_GEOMETRY_INPUT_TYPE_EXT, GL_LINES);
glProgramParameteriEXT( shader_prog, GL_GEOMETRY_OUTPUT_TYPE_EXT, GL_LINES);
glProgramParameteriEXT( shader_prog, GL_GEOMETRY_VERTICES_OUT_EXT, 2);