Я изучаю текст о texture mapping
и на preparing to draw
сессии, я читаю:
Определите параметры обтекания текстуры. Это будет контролировать то, что происходит, когда координата текстуры больше 1,0 или меньше 0,0:
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,wrap);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,wrap);
где обтекание:
GL_REPEAT: указывает, что этот шаблон будет повторяться (т. е. обтекание), если встретятся преобразованные координаты текстуры меньше 0,0 или больше 1,0.
GL_CLAMP: указывает, что шаблон будет «придерживаться» значения 0,0 или 1,0.
Но нет объяснения, что является причиной появления таких текстурных координат?
Например, предположим, что я только что нарисовал прямоугольник и хочу применить к нему изображение в качестве текстуры, возможно ли встретить такие координаты?
glTexCoord2f(0, 2);
например. Это имеет очень четкое и четкое значение как в коде, так и во время работы программы. Если вы видите это, программист намеренно сделал это, потому что это дает желаемый результат.Да, вы можете встретить координаты текстуры больше
1.0
и меньше чем0.0
.Это полностью зависит от модели, которую вы загрузили. Обычно для каждой вершины сохраняются координаты позиции, нормали и текстуры. В большинстве форматов файлов сетки координата текстуры не ограничена никаким диапазоном.
Это используется для повторения текстуры . Например, чтобы охватить времени текстуры четыре между четверного вершин, текстурные координаты бы
0,0
,0,4
,4,0
и4,4
. Без текстуры упаковки, вам потребуются дополнительные вершины , чтобы разделить поверхность на 4 раза 4 вспомогательных поверхностей с каждой текстурных координат0,0
,0,1
,1,0
,1,1
. Меньшее количество вершин приводит к лучшей производительности рендеринга.Обычно нежелательно, чтобы пользователь замечал края повторяющейся текстуры. Поэтому в большинстве случаев повторяющиеся текстуры являются мозаичными. Это означает, что правый край плавно переходит в левый, а верхний - в нижний. Таким образом, переход будет плавным и, надеюсь, не будет замечен пользователем.
Более сложная, но связанная с этим тема заключается в том, чтобы хитро скрыть тот факт, что одна и та же текстура повторялась несколько раз. Например, смешивание повторяющихся текстур разного размера, например текстуры стены и грязной наклейки, является распространенной техникой.
источник
Without texture wrapping, you would need additional vertices to split the surface into 4 times 4 sub surfaces with each the texture coordinates 0,0, 0,1, 1,0, 1,1
Это настоящее практическое объяснение! Спасибо!