Я написал гео-шейдер, который получает строку (2 вершины) и должен добавить ширину (длину) вдоль линии normal. Без гео-шейдера все отображается правильно. Я также вычислил формулу с карандашом и бумагой (работал). Я их расчета по формуле:Geometry shader не работает должным образом
N1 = (- (х2 - х1), у2-у1) N2 = (х2 - х1, - (у2 - у1))
Мой код:
#version 330 core
layout(lines) in;
layout(triangle_strip, max_vertices = 4) out;
uniform float length;
void main()
{
//A -(x2 - x1) | y2 - y1
//B x2 - x1 | -(y2 - y1)
vec2 normal = normalize(vec2(gl_in[1].gl_Position.x - gl_in[0].gl_Position.x, gl_in[1].gl_Position.y - gl_in[0].gl_Position.y));
vec3 normalA = vec3(-normal.x, normal.y, 0);
vec3 normalB = vec3(normal.x, -normal.y, 0);
gl_Position = gl_in[0].gl_Position + (vec4(normalB, 0) * length);
EmitVertex();
gl_Position = gl_in[0].gl_Position + (vec4(normalA, 0) * length);
EmitVertex();
gl_Position = gl_in[1].gl_Position + (vec4(normalA, 0) * length);
EmitVertex();
gl_Position = gl_in[1].gl_Position + (vec4(normalB, 0) * length);
EmitVertex();
EndPrimitive();
}
Р0 [0,3, 0,3] Р1 [0,4, 0,3]
Что происходит _with_ геометрии шейдеров? Вы проверяете ошибки при компиляции ваших шейдеров? –
Да, когда я не применяю свою формулу, она работает. – Sens4