Я пытаюсь сгенерировать примитивы OpenGL из 6 целочисленных вершин. т.е. 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, чтобы обогатить мою вершину?