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?

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.


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

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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.