Qué contiene gl_FragCoord?

En GLSL, en concreto en la etapa de procesamiento de fragmentos, gl_FragCoord es una variable de entrada que contiene los valores de las coordenadas relativas de ventana (x, y, z, 1/w) del fragmento en cuestión. En esta publicación se explica detalladamente cuál es su contenido y cómo se calculan las coordenadas de un píxel en coordenadas normalizadas de dispositivo (NDC).
Continuar leyendo

Líneas con anti-aliasing en OpenGL

Para dibujar líneas suaves (con anti-aliasing) en OpenGL, se deben tener en cuenta varios detalles:

  • El blending debe estar activo mientras se está pintando
  • Debe haberse definido una función de blending específica
  • El suavizado de líneas debe estar activado
  • En algunos casos, un hint para el pintado de líneas suaves debe haberse definido

Las siguientes lineas de código son las llamadas OpenGL necesarias para obtener lineas suaves:

1
2
3
4
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_LINE_SMOOTH);
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);

La siguiente imagen muestra la diferencia entre pintar lineas con y sin anti-aliasing:

Comparison between non-antialiased lines and antialiased lines