OpenGL ES 2.0 Point Sprites-Größe

15

Ich versuche, Punkt-Sprites in OpenGL ES 2.0 zu zeichnen, aber alle meine Punkte haben eine Größe von 1 Pixel ... selbst wenn ich gl_PointSize in meinem Vertex-Shader auf einen hohen Wert setze.

Wie kann ich meine Point-Sprites vergrößern?

Jonathan
quelle

Antworten:

23

OpenGL ES 2.0 unterstützt Point Sprites. Ich benutze sie für Partikel. Verwenden Sie einfach glDrawElementsmit GL_POINTS.

Im Vertex-Shader legen Sie die Größe mit fest gl_PointSizeund verwenden sie gl_PointCoordim Fragment-Shader für das Textur-Mapping.

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

Mein Fragment Shader:

uniform sampler2D tex0;
varying vec4 vColor;

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

Wenn Sie auf Android sind, können Sie mein französisches Tutorial ansehen . Es gibt ein vollständiges Projekt mit Punkt-Sprites.

Ellis
quelle
Vergessen Sie nicht, die floatPräzision in Fragment-Shadern explizit anzugeben - sie haben keine Standardgenauigkeit, floatund bei einigen Treibern können solche Shader möglicherweise nicht kompiliert werden.
Keaukraine
1

Überraschenderweise vergrößert glLineWidth () auch die Punkte:

    GLES20.glLineWidth(8); // Make the edges (and points!) thicker
    GLES20.glDrawArrays(GLES20.GL_POINTS, 0, 38);// 38 is number of my vertexes
Kamran Bigdely
quelle
Du bist ein Held. Bob segne.
netpoetica
0

OpenGLES 2.0 unterstützt Punkt-Sprites nicht direkt. Sie können Ihre glPoints entweder texturieren oder manuell ein Quad mit Kameraausrichtung und Kameraausrichtung erstellen, das auf einem Punkt zentriert ist.

grahamp
quelle
5
Falsch. Verwenden Sie GL_POINTS und gl_PointSize im Vertex-Shader
Ellis
@Ellis Nun, das hat er irgendwie gesagt. Wenn Sie sich den veröffentlichten Link ansehen, erfahren Sie, welcher Teil des GL ES 1 veraltet ist und wie Sie Ihre glPoints strukturieren können
bobobobo