我正在尝试在 OpenGL ES 2.0 中为粒子系统实现纹理点(例如点精灵)。我遇到的问题是所有点都呈现为纯黑色方块,而不是正确映射纹理。
我已经验证 gl_PointCoord 实际上返回从 0.0 到 1.0 的 x/y 值,这将映射到整个纹理。不过,texture2D 调用似乎总是返回黑色。
我的顶点着色器:
attribute vec4 aPosition;
attribute float aAlpha;
attribute float aSize;
varying float vAlpha;
uniform mat4 uMVPMatrix;
void main() {
gl_PointSize = aSize;
vAlpha = aAlpha;
gl_Position = uMVPMatrix * aPosition;
}
还有我的片段着色器:
precision mediump float;
uniform sampler2D tex;
varying float vAlpha;
void main () {
vec4 texColor = texture2D(tex, gl_PointCoord);
gl_FragColor = vec4(texColor.rgb, texColor.a * vAlpha);
}
有问题的纹理是 16x16。我能够成功地将这个纹理映射到其他几何体,但由于某种原因不能映射到点。
我的平台是摩托罗拉 Droid,运行 Android 2.2。