Точечные спрайты состоят из одной позиции. Поэтому любые «изменяющиеся» значения на самом деле не будут изменяться , потому что между ними нечего интерполировать.
gl_PointCoord
- это значение vec2
, где значения XY находятся в диапазоне [0, 1]. Они представляют местоположение на точке. (0, 0) - нижний левый угол точки, а (1, 1) - верхний правый.
Итак, вы хотите отобразить (0, 0) в левом нижнем углу вашего спрайта и (1, 1) в правом верхнем. Для этого вам нужно знать определенные вещи: размер спрайтов (при условии, что они все одинакового размера), размер текстуры (потому что функции выборки текстуры принимают нормализованные координаты текстуры, а не местоположения в пикселях) и который спрайт в данный момент отображается.
Последний может быть установлен с помощью varying
. Это может быть просто значение, которое передается в виде данных на каждую вершину в varying
в вершинном шейдере.
Вы используете это плюс размер спрайтов, чтобы определить, где в текстуре вы хотите получить данные для этого спрайта. Когда у вас есть тексельские координаты, которые вы хотите использовать, вы делите их на размер текстуры, чтобы получить нормализованные координаты текстуры.
В любом случае точечные спрайты, несмотря на название, на самом деле не предназначены для рендеринга sprite . Для этого было бы проще использовать четырехугольники / треугольники, поскольку вы можете быть более уверенными в том, какие именно позиции есть у всех.