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?
OpenGL ES 2.0 unterstützt Point Sprites. Ich benutze sie für Partikel. Verwenden Sie einfach glDrawElements
mit GL_POINTS
.
Im Vertex-Shader legen Sie die Größe mit fest gl_PointSize
und verwenden sie gl_PointCoord
im 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.
float
Präzision in Fragment-Shadern explizit anzugeben - sie haben keine Standardgenauigkeit,float
und bei einigen Treibern können solche Shader möglicherweise nicht kompiliert werden.Überraschenderweise vergrößert glLineWidth () auch die Punkte:
quelle
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.
quelle