Таким образом, подпрограмма визуализации получает массив (х, y,z,l, sA/at, tjav с, i/o,) для каждой вершины грани, подлежащей визуализации. Теперь можно легко визуализировать текстуры, используя гиперболическую интерполяцию-согласно равенству (8.19): необходимые величины sA/at и \/ak имеются в наличии для каждой вершины.

Практические упражнения

8.5.2. Структуры данных для каркасных моделей с текстурами Рассмотрим специальные типы данных, необходимые для представления каркасных объектов в следующих двух случаях: О на каждую грань будет наложена своя текстура; О вокруг всей сетки «обертывается» одна и та же текстура.

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

8.5.3. Правильность вычислений псевдоглубины Докажите правильность утверждения раздела «Удаление невидимых поверхностей» о том, что при определении псевдоглубины точки можно использовать линейную (а не гиперболическую) интерполяцию. Пусть точка А проецируется в а, а точка В - вЬ. При линейной интерполяции псевдоглубина спроецированной точки вычисляется по формуле lerp(a, b,f) как третий компонент этой точки. Это будет правильно только при условии, что результирующая величина равна истинной псевдоглубине точки, в которую проецируется точка 1егр(Л, В, g) (для соответствующего значения g). Покажите, что это действительно так. (Подсказка. Примените равенства (8.15) и (8.16) для третьего компонента проецируемой точки.)

8.5.4. Обертывание и наклеивание текстур в OpenGL

Для того чтобы заставить узор «обернуться» или выложиться мозаикой в направлении s, следует использовать подпрограмму glTexParameteri(GL_TEXTURE_2D. GL_TEXTURE_WRAP_S, GL_REPEAT). Соответственно для заворачивания в направлении t используется параметр GL_TEXTURE_WRAP_T. На самом деле это принято по умолчанию, поэтому нет необходимости делать что-либо явно. Для отключения режима мозаики следует заменить параметр GL_REPEAT на GLjCLAMP. Поищите дальнейшие подробности в документации по OpenGL, а также поэкспериментируйте с различными установкаи OpenGL для выяснения их действия.


⇐ Предыдущая| |Следующая ⇒