Я пытаюсь сгенерировать примитивы OpenGL из 6-ти целочисленной вершины. IE целочисленное значение 6 сгенерирует 4 пользовательских line_strip
.
Сначала я пытаюсь переместить массив из 6 целых чисел из Vertex в Shader, и для этого я делаю простой тест следующим образом.
Это код для вершинного шейдера:
#version 330
layout (location = 0) in int inVertex[6];
out int outVertex[6];
void main()
{
outVertex = inVertex;
}
и для геометрического шейдера, который жестко кодирует сегмент:
#version 330
in int vertex[6];
layout (line_strip, max_vertices = 2) out;
void main()
{
gl_Position = vec4(-0.2, -0.2, 0.0, 1.0);
EmitVertex();
gl_Position = vec4(-0.2 +0.4, -0.2, 0.0, 1.0);
EmitVertex();
EndPrimitive();
}
Но я получаю пустой экран.
Если я изменю шейдер Vertex на это:
#version 330
layout (location = 0) in int inVertex[6];
out int outVertex[6];
void main()
{
//outVertex = inVertex;
gl_Position = vec4(0.0, 0.0, 0.0, 0.0);
}
и шейдер геометрии на это:
#version 330
//in int candle[6];
layout (points) in;
layout (line_strip, max_vertices = 2) out;
void main()
{
gl_Position = vec4(-0.2, -0.2, 0.0, 1.0);
EmitVertex();
gl_Position = vec4(-0.2 +0.4, -0.2, 0.0, 1.0);
EmitVertex();
EndPrimitive();
}
Затем я получаю сегмент на экране:
Обязательно ли использовать gl_Position? Если так, как я могу передать дополнительные переменные вместе gl_Position, чтобы обогатить мою вершину?