GLSL 1.5 Simple Geometry shader

Я пытаюсь написать простой геометрический шейдер, который просто проходит через вершины, прежде чем пытаться что-то изменить.

Мой вершинный шейдер -

#version 150 core
in vec3 inPosition;
in vec4 inColor;

out vec4 vertexColor;

void main() {
    vertexColor = inColor;
    gl_Position = vec4(inPosition, 1.0);
}

Мой геометрический шейдер -

#version 150 core
layout (triangles) in;
layout (triangle_strip,  max_vertices=3) out;

void main() {
    gl_Position = gl_in[0].gl_Position;
    EmitVertex();

    gl_Position = gl_in[1].gl_Position;
    EmitVertex();

    gl_Position = gl_in[2].gl_Position;
    EmitVertex();
    EndPrimitive();
}

А мой фрагментный шейдер -

#version 150 core
in vec4 vertexColor;
out vec4 fragColor;

void main() {
    fragColor = vertexColor;
}

Без подключенного геометрического шейдера все работает нормально. Однако когда я подключаю геометрический шейдер, он перестает работать. Что мне не хватает? Требуется ли для моего шейдера геометрии ввод для vertexColor из моего вершинного шейдера, и если да, то как это делается?

6
задан Nicol Bolas 13 January 2012 в 17:33
поделиться