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.