Monday, December 28, 2015

3d - OpenGL ES 2.0 Point Sprites Size


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

Simple past, Present perfect Past perfect

Can you tell me which form of the following sentences is the correct one please? Imagine two friends discussing the gym... I was in a good s...