Второму и пятому аргументу функции в нашем примере присвоим значение 0. Первое значение 0 (второй аргумент) означает, что данный массив не является сокращенной версией некоторого большего массива текстур. Значение 0 пятого аргумента означает, что вокруг текстуры не нужно создавать рамочку. Если бы данному аргументу было присвоено значение 1 (единственная другая возможность), текстурный узор был бы отображен с однопиксельной границей вокруг него (это полезно, когда нужно соединить данный узор с соседним текстурным узором). Для третьего аргумента значение GL_RGBA означает, что каждый цвет текстурного узора задается четырьмя значениями RGBA. До этого момента мы использовали три RGB-кода, но RGBA-значения часто обрабатываются эффективнее, поскольку они согласованы с границами областей памяти процессора. Есть множество других спецификаций цвета, включая задание цвета единственным значением интенсивности или яркости. Параметру nTexColors (четвертый аргумент) присваивается положительное целое число, указывающее число цветов в линейном текстурном узоре. Поскольку пятый аргумент имеет значение 0 (параметр рамки), число цветов в текстурном шаблоне должно быть степенью двойки. Если пятому аргументу присвоено значение 1, число цветов в текстурном узоре будет равно 2 плюс степень двойки. Чтобы обеспечить со пряжение цвета с соседними узорами, используется два цвета. Вообще, можно задать одноиндексный текстурный узор, включающий до 64+2 цветов, а некоторые реализации OpenGL допускают еще более разнообразные текстурные узоры. Параметры, описывающие цвета текстуры и границы узора, хранятся в массиве lineTexArray. В рассмотренном примере границы не используются, и каждая последовательная группа из четырех элементов в массиве представляет один компонент цвета текстурного узора. Следовательно, число элементов в lineTexArray равно 4 х nTexColors. Конкретизируем наш пример: если требуется определить текстурный узор, состоящий из 8 цветов, массив текстуры должен содержать 4 х 8 = 32 элемента.

Параметры dataFormat и dataType подобны аргументам функций glDraw-Pixels и glReadPixels (раздел 3.19). Параметру dataFormat присваивается символьная константа OpenGL, чтобы указать, как задаются коды цвета в массиве текстуры. Например, можно использовать символьную константу GL_BGRA, чтобы указать, что компоненты цвета задаются в порядке “синий, зеленый, красный, альфа-фактор”. Чтобы указать тип данных BGRA или RGBA, можно присвоить параметру dataType значение константы GL_UNSIGNED_BYTE. Другие значения, которые можно присвоить параметру dataType, зависят от выбранного формата данных, включая GL_INT и GL_FLOAT.

На объект сцены можно наложить несколько копий текстуры или любой непрерывный поднабор цветов текстуры. При отображении группы текстурных элементов в одну или несколько областей пикселей границы текстурных элементов обычно не выровнены по границам пикселей. Область пикселя может вмещаться в границы одного текстурного элемента RGB (или RGBA), или же она может захватывать несколько текстурных элементов. Чтобы упростить расчет отображения текстуры, используем следующие функции и сопоставим с каждым пикселем цвет ближайшего текстурного элемента.


⇐ вернуться назад | | далее ⇒