Я просто возился с некоторыми геометрическими шейдерами, берущими список GL_POINTS и выводящими прямоугольник с полосами треугольника.у меня это в основном работает, но когда я увеличиваю / уменьшаю или перемещаюсь по треугольникам, полосы идут повсюду и не сохраняют свое положение в мире, но все еще правильно рисуют прямоугольник.
например, если явведите (5,5,0), что он нарисует треугольную полосу с этими точками, чтобы создать квадрат:
(5, 5, 0)
(5.5, 5, 0)
(5, 5.5, 0)
(5.5, 5.5, 0)
Вершинный шейдер:
// Vertex Shader
#version 130
in vec4 vVertex;
void main(void)
{
gl_Position = gl_ModelViewProjectionMatrix * vVertex;
}
Геометрический шейдер:
version 130
#extension GL_EXT_geometry_shader4 : enable
void main(void)
{
vec4 a;
vec4 b;
vec4 c;
vec4 d;
int i = 0;
for(i = 0; i gl_VerticesIn; i++)
{
a = gl_PositionIn[i];
//a.x -= 0.5;
//a.y -= 0.5;
//a.z = 0.0;
gl_Position = a;
EmitVertex();
b = gl_PositionIn[i];
b.x += 0.5;
//b.y -= 0.5;
//b.z = 0.0;
gl_Position = b;
EmitVertex();
d = gl_PositionIn[i];
//d.x -= 0.5;
d.y += 0.5;
//d.z = 0.0;
gl_Position = d;
EmitVertex();
c = gl_PositionIn[i];
c.x += 0.5;
c.y += 0.5;
//c.z = 0.0;
gl_Position = c;
EmitVertex();
}
EndPrimitive();
}
я, вероятно, упускаю что-то глупое.