I am trying to draw point sprites in OpenGL ES 2.0, but all my points end up with a size of 1 pixel...even when I set gl_PointSize to a high value in my vertex shader.
How can I make my point sprites bigger?
Answer
OpenGL ES 2.0 supports Point Sprites; i use them for particles. Just use glDrawElements
with GL_POINTS
.
In vertex shader, you set the size with gl_PointSize
and use gl_PointCoord
in fragment shader for texture mapping.
My 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;
}
My fragment shader:
uniform sampler2D tex0;
varying vec4 vColor;
void main()
{
gl_FragColor = texture2D(tex0, gl_PointCoord) * vColor;
}
If you are on Android, you can look my french Tutorial. There is a full project with point sprites.
No comments:
Post a Comment