Посмотрите документацию для glTexGen (в вашем случае вы хотите использовать GL_EYE_LINEAR
вместе с соответствующим набором коэффициентов, как описано ниже) и glEnable (GL_TEXTURE_GEN_*
).Когда вы включаете функцию texgen для определенных компонентов координат текстуры (S, T, R и / или Q), значения, которые вы указываете для этих компонентов (через glTexCoord
), игнорируются, и вместо этого создаются координаты текстуры в соответствии с указанным glTexGen
Режим.
При вычислении координат текстуры через GL_EYE_LINEAR
координаты вершины сначала преобразуются в пространство глаза с помощью текущей матрицы GL_MODELVIEW
.Оказавшись в пространстве глаза, для каждого включенного компонента (S, T, R, Q) координаты вершины преобразуются с помощью обратной матрицы GL_MODELVIEW
, определенной во время вызова glTexGen
, и точечного произведения.между полученными координатами и коэффициентами, отправленными на glTexGen
, получается.Для каждого включенного компонента результирующие скалярные значения становятся соответствующими компонентами (S, T, R и / или Q) координат текстуры, которые в конечном итоге преобразуются матрицей GL_TEXTURE
для получения окончательных координат текстуры.
Для каждого компонента текстуры коэффициенты (a, b, c, d), отправленные на glTexGen
, определяют плоскость ax + на + cz + d = 0. Предполагая, что (a, b, c) является вектором единичной длинырезультат операции точечного произведения, описанный выше, представляет расстояние между этой плоскостью и обрабатываемой вершиной.Если GL_EYE_LINEAR
включено для всех четырех компонентов текстуры, а уравнения плоскости для S, T, R и Q определяются соответственно как (1,0, 0,0, 0,0, 0,0), (0,0, 1,0, 0,0, 0,0), (0,0,0,0, 1,0, 0,0) и (0,0, 0,0, 0,0, 1,0), координаты текстуры, полученные для каждого компонента текстуры, в точности совпадают с исходными координатами вершины пространства объекта.Таким образом, матрица GL_TEXTURE
должна содержать все необходимые операции для преобразования этих координат из пространства объектов в пространство текстур: моделирование , просмотр и проекция преобразования для преобразованияот координат объекта к нормализованным координатам устройства, а также scale и bias для преобразования из нормализованных координат устройства в текстурное пространство.