Я пытаюсь написать простой геометрический шейдер, который просто проходит через вершины, прежде чем пытаться модифицировать материал.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;
}
Без геометрии шейдеров, связанных с, все работает отлично. Однако, когда я связываюсь в геометрическом шейдере, он перестает работать. Что мне не хватает? Мне нужен мой шейдер Geometry для ввода vertexColor
из моего вершинного шейдера, и если да, то как это делается?
http://en.wikipedia.org/wiki/GLSL#A_sample_trivial_GLSL_geometry_shader? – n0rd
Это не отвечает на мой вопрос. Мой геометрический шейдер точно такой же, как тот, который указан на этой странице, за исключением удаляемого цикла for. Однако это не сработает. Ничто не нарисовано. Также вершинные и фрагментарные шейдеры, показанные на этой странице, предназначены для glsl 1.20 Существует проблема, связывающая все это вместе, что я не понимаю, и не могу найти какую-либо информацию о том, как ее исправить. – user1139069