Taille des sprites à points OpenGL ES 2.0


15

J'essaie de dessiner des sprites ponctuels dans OpenGL ES 2.0, mais tous mes points se retrouvent avec une taille de 1 pixel ... même lorsque j'ai défini gl_PointSize sur une valeur élevée dans mon vertex shader.

Comment agrandir mes sprites de point?

Réponses:


24

OpenGL ES 2.0 prend en charge les sprites ponctuels; je les utilise pour les particules. Utilisez simplement glDrawElementsavec GL_POINTS.

Dans vertex shader, vous définissez la taille avec gl_PointSizeet utilisez gl_PointCoorddans fragment shader pour le mappage de texture.

Mon vertex shader:

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;  
}

Mon fragment shader:

uniform sampler2D tex0;
varying vec4 vColor;

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

Si vous êtes sur Android, vous pouvez consulter mon tutoriel français . Il existe un projet complet avec des sprites ponctuels.


N'oubliez pas de spécifier explicitement la floatprécision dans les shaders de fragments - ils n'ont pas de floatprécision par défaut et sur certains pilotes, ces shaders peuvent ne pas être compilés.
keaukraine

1

Étonnamment, glLineWidth () agrandit également les points:

    GLES20.glLineWidth(8); // Make the edges (and points!) thicker
    GLES20.glDrawArrays(GLES20.GL_POINTS, 0, 38);// 38 is number of my vertexes

Vous êtes un héros. Bob bénisse.
netpoetica

0

OpenGLES 2.0 ne prend pas directement en charge les sprites ponctuels. Vous pouvez soit texturer vos glPoints, soit créer manuellement un quad face à la caméra et aligné à la caméra centré sur un point.


5
Faux. utiliser GL_POINTS et gl_PointSize dans vertex shader
Ellis

@Ellis Eh bien, il a en quelque sorte dit cela. Si vous regardez le lien affiché, il parle de la partie GL ES 1 qui a été dépréciée et comment "texturer vos glPoints"
bobobobo
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.