OpenGL ES 2.0 Nokta Sprite Boyutu


15

OpenGL ES 2.0'da nokta sprite çizmeye çalışıyorum, ancak gl_PointSize benim tepe gölgelendiricisinde yüksek bir değere ayarladığımda bile tüm puanlarım 1 piksel boyutunda ...

Nokta spritelarımı nasıl büyütebilirim?

Yanıtlar:


24

OpenGL ES 2.0 Nokta Spritelarını destekler; Onları parçacıklar için kullanıyorum. Sadece kullanmak glDrawElementsile GL_POINTS.

Köşe gölgelendiricisinde, boyutu doku eşlemesinde parça gölgeleyicisiyle ayarlar gl_PointSizeve kullanırsınız gl_PointCoord.

Köşe gölgelendiricim:

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;  
}

Parça gölgelendiricim:

uniform sampler2D tex0;
varying vec4 vColor;

void main() 
{
   gl_FragColor = texture2D(tex0, gl_PointCoord) * vColor;
}

Android'de iseniz, benim Fransız Eğitimi öğretebilirsiniz . Nokta sprite ile tam bir proje var.


floatParça gölgelendiricilerinde kesinlik belirtmeyi unutmayın - varsayılan floatkesinlikleri yoktur ve bazı sürücülerde bu gölgelendiriciler derlenemeyebilir.
keaukraine

1

Şaşırtıcı bir şekilde, glLineWidth () noktaları da büyütür:

    GLES20.glLineWidth(8); // Make the edges (and points!) thicker
    GLES20.glDrawArrays(GLES20.GL_POINTS, 0, 38);// 38 is number of my vertexes

Sen bir kahramansın. Bob korusun.
netpoetica

0

OpenGLES 2.0 nokta spritelarını doğrudan desteklemez. Ya edebilirsiniz senin glPoints doku veya el bir noktaya merkezli bir kamera bakan ve kamera hizalanmış quad oluşturun.


5
Yanlış. köşe gölgelendiricisinde GL_POINTS ve gl_PointSize kullanın
Ellis

@Ellis Peki bunu söyledi. Gönderilen bağlantıya bakarsanız, kullanımdan kaldırılan GL ES 1 kısmı ve "glPoints'inizi nasıl dokulandıracağınız" hakkında konuşuyor
bobobobo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.