Я пытаюсь реализовать текстурированные точки (например, точечные спрайты) в OpenGL ES 2.0 для системы частиц. У меня проблема в том, что все точки отображаются в виде сплошных черных квадратов, вместо того, чтобы правильно отобразить текстуру.
Я убедился, что gl_PointCoord фактически возвращает значения x / y от 0.0 до 1.0, которые будут отображаться по всей текстуре. Вызов 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. Я могу успешно сопоставить эту текстуру с другой геометрией, но по какой-то причине не с точками.
Моя платформа - Motorola Droid, работающая под управлением Android 2.2.