Ukuran OpenGL ES 2.0 Point Sprite

15

Saya mencoba menggambar sprite titik di OpenGL ES 2.0, tetapi semua poin saya berakhir dengan ukuran 1 piksel ... bahkan ketika saya mengatur gl_PointSize ke nilai tinggi di vertex shader saya.

Bagaimana saya bisa membuat poin saya sprite lebih besar?

Jonathan
sumber

Jawaban:

24

OpenGL ES 2.0 mendukung Point Sprite; saya menggunakannya untuk partikel. Cukup gunakan glDrawElementsdengan GL_POINTS.

Di vertex shader, Anda mengatur ukuran dengan gl_PointSizedan digunakan gl_PointCoorddalam 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.

Ellis
sumber
Jangan lupa untuk secara eksplisit menentukan floatpresisi dalam shader fragmen - mereka tidak memiliki floatpresisi default dan pada beberapa driver shader seperti itu mungkin gagal dikompilasi.
keaukraine
1

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
Kamran Bigdely
sumber
Anda seorang pahlawan. Bob memberkati.
netpoetica
0

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.

grahamp
sumber
5
Salah. gunakan GL_POINTS dan gl_PointSize di vertex shader
Ellis
@ Ellis Yah dia semacam mengatakan itu. Jika Anda melihat tautan yang diposting itu berbicara tentang bagian GL ES 1 yang sudah usang, dan bagaimana "tekstur glPoints Anda"
bobobobo