Tamaño de sprites de punto OpenGL ES 2.0

15

Estoy tratando de dibujar sprites de puntos en OpenGL ES 2.0, pero todos mis puntos terminan con un tamaño de 1 píxel ... incluso cuando configuro gl_PointSize en un valor alto en mi sombreador de vértices.

¿Cómo puedo hacer que mis sprites de punto sean más grandes?

Jonathan
fuente

Respuestas:

24

OpenGL ES 2.0 es compatible con Point Sprites; Los uso para partículas. Solo use glDrawElementscon GL_POINTS.

En el sombreador de vértices, establece el tamaño gl_PointSizey utiliza el gl_PointCoordsombreador de fragmentos para el mapeado de texturas.

Mi sombreador de vértices:

uniform mat4 uMvp;
uniform float uThickness;

attribute vec3 aPosition;
attribute vec2 aTexCoord; 
attribute vec4 aColor;

varying vec4 vColor;

void main() {
    vec4 position = uMvp * vec4(aPosition.xyz, 1.);
    vColor = aColor;
    gl_PointSize = uThickness;
    gl_Position =  position;  
}

Mi sombreador de fragmentos:

uniform sampler2D tex0;
varying vec4 vColor;

void main() 
{
   gl_FragColor = texture2D(tex0, gl_PointCoord) * vColor;
}

Si estás en Android, puedes mirar mi tutorial en francés . Hay un proyecto completo con sprites puntuales.

Ellis
fuente
No olvide especificar explícitamente la floatprecisión en sombreadores de fragmentos: no tienen floatprecisión predeterminada y en algunos controladores, tales sombreadores pueden fallar al compilar.
keaukraine
1

Sorprendentemente, glLineWidth () también aumenta los puntos:

    GLES20.glLineWidth(8); // Make the edges (and points!) thicker
    GLES20.glDrawArrays(GLES20.GL_POINTS, 0, 38);// 38 is number of my vertexes
Kamran Bigdely
fuente
Usted es un héroe. Bob los bendiga.
netpoetica
0

OpenGLES 2.0 no admite directamente sprites de punto. Puede texturizar sus glPoints o crear manualmente un quad orientado hacia la cámara y alineado con la cámara centrado en un punto.

Grahamp
fuente
55
Falso. use GL_POINTS y ​​gl_PointSize en el sombreador de vértices
Ellis
@Ellis Bueno, él dijo eso. Si nos fijamos en el enlace publicado, habla sobre la parte GL ES 1 que fue desaprobada y cómo "texturizar sus glPoints"
bobobobo