OpenGL ES 2.0点精灵大小


15

我正在尝试在OpenGL ES 2.0中绘制点精灵,但是所有点的大小最终都是1像素……即使在顶点着色器中将gl_PointSize设置为较高的值时也是如此。

如何使我的点子精灵变大?

Answers:


24

OpenGL ES 2.0支持Point Sprites;我将它们用于颗粒。只需glDrawElements与一起使用GL_POINTS

在顶点着色器中,可以使用设置大小gl_PointSizegl_PointCoord在片段着色器中使用它来进行纹理映射。

我的顶点着色器:

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

我的片段着色器:

uniform sampler2D tex0;
varying vec4 vColor;

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

如果您使用的是Android,则可以查看我的法语教程。有一个包含点精灵的完整项目。


不要忘记float在片段着色器中明确指定精度-它们没有默认float精度,并且在某些驱动程序上,此类着色器可能无法编译。
keaukraine 2014年


0

OpenGLES 2.0不直接支持点精灵。您可以纹理化glPoints或手动创建以点为中心的面向照相机并对准照相机的四边形。


5
假。在顶点着色器中使用GL_POINTS和gl_PointSize
Ellis

@Ellis好吧,他这么说。如果您看一下发布的链接,它讨论的是不推荐使用的GL ES 1部分,以及如何“构造glPoints”
bobobobo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.