Dimensioni Sprite OpenGL ES 2.0 Point


15

Sto cercando di disegnare sprite di punti in OpenGL ES 2.0, ma tutti i miei punti finiscono con una dimensione di 1 pixel ... anche quando ho impostato gl_PointSize su un valore elevato nel mio shader di vertici.

Come posso ingrandire i miei sprite di punti?

Risposte:


24

OpenGL ES 2.0 supporta Point Sprites; li uso per le particelle. Basta usare glDrawElementscon GL_POINTS.

Nel vertex shader, si imposta la dimensione con gl_PointSizee si usa gl_PointCoordnel framment shader per la mappatura delle trame.

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

Il mio framment shader:

uniform sampler2D tex0;
varying vec4 vColor;

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

Se sei su Android, puoi guardare il mio tutorial francese . C'è un progetto completo con sprite di punti.


Non dimenticare di specificare esplicitamente la floatprecisione negli shader di frammenti: non hanno una floatprecisione predefinita e su alcuni driver tali shader potrebbero non essere compilati.
keaukraine,

1

Sorprendentemente, glLineWidth () aumenta anche i punti:

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

Sei un eroe. Bob benedica.
netpoetica,

0

OpenGLES 2.0 non supporta direttamente gli sprite dei punti. Puoi strutturare i tuoi glPoint o creare manualmente un quadrante rivolto verso la fotocamera e allineato su un punto centrato su un punto.


5
False. usa GL_POINTS e gl_PointSize nello shader di vertici
Ellis,

@Ellis Beh, l'ha detto in qualche modo. Se guardi il link pubblicato, parla della parte GL ES 1 che è stata deprecata e di come "strutturare i tuoi glPoints"
bobobobo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.