Jawaban:
OpenGL ES 2.0 mendukung Point Sprite; saya menggunakannya untuk partikel. Cukup gunakan glDrawElements
dengan GL_POINTS
.
Di vertex shader, Anda mengatur ukuran dengan gl_PointSize
dan digunakan gl_PointCoord
dalam shader fragmen untuk pemetaan tekstur.
Vertex shader saya:
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;
}
Shader fragmen saya:
uniform sampler2D tex0;
varying vec4 vColor;
void main()
{
gl_FragColor = texture2D(tex0, gl_PointCoord) * vColor;
}
Jika Anda menggunakan Android, Anda dapat melihat Tutorial bahasa Perancis saya . Ada proyek penuh dengan sprite titik.
Anehnya, glLineWidth () membuat poin lebih besar juga:
GLES20.glLineWidth(8); // Make the edges (and points!) thicker
GLES20.glDrawArrays(GLES20.GL_POINTS, 0, 38);// 38 is number of my vertexes
OpenGLES 2.0 tidak secara langsung mendukung sprite titik. Anda bisa memberi tekstur pada glPoints Anda atau secara manual membuat quad yang menghadap kamera dan sejajar kamera yang terpusat pada suatu titik.
float
presisi dalam shader fragmen - mereka tidak memilikifloat
presisi default dan pada beberapa driver shader seperti itu mungkin gagal dikompilasi.