Para cada punto que toma mi programa de sombreado OpenGL, crea un anillo rojo que transita suavemente entre opaco y totalmente transparente. Mi programa de sombreado funciona, pero tiene artefactos de bandas.¿Por qué mi programa de sombreado OpenGL para puntos tiene artefactos de bandas?
El sombreador de fragmentos está a continuación.
#version 110
precision mediump float;
void main() {
float dist = distance(gl_PointCoord.xy, vec2(0.5, 0.5));
// Edge value is 0.5, it should be 1.
// Inner most value is 0 it should stay 0.
float inner_circle = 2.0 * dist;
float circle = 1.0 - inner_circle;
vec4 pixel = vec4(1.0, 0.0, 0.0, inner_circle * circle);
gl_FragColor = pixel;
}
Aquí está el vertex shader menos interesante que no creo que es la causa del problema.
#version 110
attribute vec2 aPosition;
uniform float uSize;
uniform vec2 uCamera;
void main() {
// Square the view and map the top of the screen to 1 and the bottom to -1.
gl_Position = vec4(aPosition, 0.0, 1.0);
gl_Position.x = gl_Position.x * uCamera.y/uCamera.x;
// Set point size
gl_PointSize = (uSize + 1.0) * 100.0;
}
Por favor, ayuda a averiguar, ¿por qué mi programa de sombreado OpenGL tiene artefactos de bandas?
P.S. Por cierto, esto es para una tableta Acer Iconia de Android.
¿Se puede hacer una consulta glGet con GL_ALPHA_BITS? ¿Tal vez el número de bitplanes alfa en su superficie de renderizado es pequeño? – Tim
@Tim Me está dando 0. –
Hola Tim, me pregunto si has resuelto el problema. –