GL_RGBA, GL_UNSIGNED_BYTE, 0, minLevel, maxLevel, surfTexArray); Данная функция создает сокращенные узоры для диапазона номеров уровней, заданного параметрами minLevel и maxLevel. В каждом случае строится MIP-образ для текущего текстурного узора, заданного на уровне номер 0.

Метод определения цветов пикселей по сокращенным узорам выбирается с использованием функции glTexParameter и символьной константы GL_TEXTURE_MIN_FILTER. Например, в следующей функции задается процедура отображения для двухмерного текстурного узора.

glTexParameter (GL_TEXTURE_2 D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); Данная функция задает, что процедуры текстурирования должны использовать сокращенные узоры, наиболее точно согласующиеся с размером пикселя (MIPMAP_NEAREST). Затем пикселю присваивается цвет ближайшего текстурного элемента (GL_NEAREST) в данном сокращенном узоре. С помощью символьной константы GL_LINEAR_MIPMAP_NEAREST задается линейная комбинация цветов текстуры из ближайшего сокращенного узора. С помощью GL_NEAREST_MIPMAP_LINEAR (значение по умолчанию) задается средний цвет, вычисляемый по ближайшим элементам текстуры в каждом сокращенном узоре, ближайшем к размеру пикселя. Наконец, GL_LINEAR_MIPMAP_LINEAR вычисляет цвет пикселя, используя линейную комбинацию цветов текстуры из набора ближайшего по размеру сокращенного узора.

ГРАНИЦЫ ТЕКСТУРЫ OpenGL

Когда на объект накладывается несколько текстур или множество копий одной текстуры, а цвета пикселей вычисляются методом линейной интерполяции цветов текстур, на краях соседних узоров могут быть заметными эффекты наложения. Этого можно избежать, включив в каждый узор границу, причем так, чтобы цвета границы согласовывались с цветами краев текстур соседних узоров.

Обозначить цвет границы текстуры можно несколькими способами. Код цвета соседнего узора можно скопировать на границу другого узора, используя функцию glTexSublmage. Другой вариант - прямо указать цвета границы в массиве текстуры, заданном с помощью функции glTexImage. Еще одна альтернатива - задать цвет границы, используя процедуру glTexParameter. Например, цвет границы двухмерного узора можно присвоить с помощью команды

glTexParameterfv (GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR,

borderColor); Здесь параметру borderColor присваивается четырехэлементный набор цветовых компонентов RGBA. По умолчанию цвет границы - черный (0.0, 0.0, 0.0, 0.0).

ЗАМЕСТИТЕЛИ ТЕКСТУРЫ В OpenGL

В любой функции glTexImage первый элемент можно положить равным символьной константе, называемой текстурным представителем (texture proxy). Задача этой константы - хранить определение текстурного узора, пока не будет решено, достаточно ли ресурсов для обработки данного узора. Для двухмерного узора константа представления равна GL_PROXY_TEXTURE_2D, и подобные константы доступны для линейных и объемных текстурных узоров. После того как текстурный представитель задан, используется функция glGetTexLevelFunction и определяется, применимы ли конкретные значения параметров.

В качестве примера применения представителя текстуры ниже приведен фрагмент кода, в котором системе посылается запрос, чтобы определить, можно ли использовать высоту, заданную для двухмерного узора.


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