М. Ву, Т. Девис, Дж. Нейдер, Д. Шрайнер - OpenGL. Руководство по программированию (Библиотека программиста) (2006) (1124363), страница 71
Текст из файла (страница 71)
Аргумент хоДзег указывает смешение тексела в существующем массиве текстуры, куда будет помещено неполное изображение. Чтобы задействовать буфер кадров в качестве источника новой одномерной текпуры или для подмены старой текстуры либо ее части, используйте команды 1)(орутех1вабе10() или к16оругех5оЫваке10(). чоЫ к16оруТех1ваке10(С1.еппш гагдег, С1.шг 1епе1, С1!и( т1егла!гогтад Я|чп( х, С?зпг у, С1 гйге! юЫЙ, С1зп( бои!ег); Создает одномерную текстуру с использованием данных буфера кадров для определения ее текселов. Пикселы читаются из текущего буфера 61 кЕА0 80Г Г ЕК и обрабатываются аналогично команде к16ору Р ! хе1з (), но вместо поступления в буфер кадров пикселы помещаются в память текстуры.
Здесь сохраняют силу установки для к1Р(хе15тоге*() и кТР! хе1Тгапз(ег*(). Аргумент Гагдег должен быть установлен в значение 61 ТЕХТпкЕ 10. Уровень детализации (1еие1), внутренний формат (тгегаа1готтаг) и границы (Ьоп!ег) задаются подобно к16оруТех1паке20(). Массив текстуры берется из строки пикселов с координатами левого конца (х, у). Ширина (гаЫ(А) указывает количество пикселов в строке. Это значение должно быть равно 2~ (или 2~ + 2, без учета границ), где т — неотрицательное целое число. чоЫ д)6оругех5оЫааке10(С|.епшп сагпег, С!.)пс 1епе1, С!зп( хоДзед С(зпг х, СПп( у, С! я!ге! геЫгл); Применяет данные изображения в буфере кадров для замены существующего одномерного изображения текстуры или ее некусочной подобласти.
Пикселы читаются из текущего буфера 6( ЯЕА0 ВЬРРЕК н обрабатываются аналогично команде д16оруР(хе1з(), но вместо поступления в буфер кадров они помещаются в память текстуры. Сохраняют силу установки для В1Р) хе|- Тгапзтег*() и других операций при передаче пнкселов. Аргумент Гагпег должен быть установлен в значение 6( ТЕХТЬРЕ 10. Аргумент 1епе! — это номер уровня детализации М!Р-отображения. Аргумент хо1!хе! указывает смещение тексела в пределах массива существующей текстуры, по которому помещается парциальное изображение.
Массив текстуры участка иэображения берется из строки пикселов с координатами левого конца (х, у). Ширина (илЫ(А) задает количество пикселов в ряду. 328 Глава 9 ° Наложение текстур Трехмерные текстуры Трехмерные текстуры обычно используются в медицинских и геологических приложениях. В первых такие текстуры могут потребоваться для послойно представленных результатов компьютерной томографии (СТ) или для изображений, полученных при магнитной резонансной томографии (Мк(). При изысканиях нефти или газа трехмерные текстуры помогут смоделировать структуру вгорных пород. ПРИМЕЧАНИЕ Трехмерное текстурирование — это часть более общей категории приложений, выполняющих объемную визуализацию.
Некоторые такие усовершенствованные приложения ииеют дело с вокселами (чохе!з), трехмерными аналогами пикселов. По причине своего размера трехмерные текстуры могут потреблять значительный объем ресурсов. Даже относительно грубая трехмерная текстура может требовать в 16 или 32 раза больше памяти, чем ее двухмерное подобие.
Для большинства двухмерных текстур и подтекстур имеются соответствующие «трехмерные» процедуры-аналоги. Об изображении трехмерной текстуры можно думать как о стопке двухмерных прямоугольников. В памяти зти прямоугольники упорядочены последовательно. Чтобы создать простую трехмерную текстуру, используйте команду б\Тех1шаае30О. уоЫ д)Тех1ваде30(С1.епцт Та!Вей С(.)пг!еоеЬ С1.!п1 тсетлаТоплат, С1.яге) Ыг11Ь, С1л!хе) Ье(яЬг, С1л!зе) ЙергЬ, С?.)п! Ьогг(ег, С1.епцщ ) оплат, С1.епщп гуре, сопят С1уоЫ "гехеЬ); Определяет трехмерную текстуру.
Все аргументы принимают те же значения, что и для команды д)Тех1ваде20О, с той разницей, что здесь |ехе1з — трехмерный массив, образованный добавлением параметра глубины (г(ергЬ). Значение глубины должно быть равно 2«(или 2 + 2 с учетом границ), где гл — неотрицательное целое число. Вы можете применять М1Р-отображение и текстуры-посредники (установив аргумент Гагиес в значение 61 РйОХУ ТЕХТнйЕ 30), и по-прежнему доступны параметры фильтрации. ПРИМЕЧАНИЕ Трехмерные свертки не поддержаны расширением !гоаб!пв 5цбзе!. Тем не менее в вашем распоряжении имеются 20-фильтры, которые применимы и к трехмерным изображениям текстур, Листинг 9А представляет часть программы, использующей трехмерную карту текстуры.
Листинг 9.4. Трехмерное текстурирование: !ехтогеЗд.с №Оеу!пе зи)ОСП 16 №Оет)пе )Не!хи! 16 №Оет)пе )верги зб всат! с бсцьусе )евое [! 0ерсн) 1! не! №пс) ))н)отп) 13); эта!)с бьи)п! сехиаве; Описание текстуры 329 !' Создание 16х16х16хЗ массива с различными значениями цвета ' дпя каждого элемента массива [г, В, Ь). Диапазон значений — от 8 до 255 <7 чо1О ваке1вайе(чо1О) ( 1пС 5, С, г; г, Х Х !Ог (5 = 0; 5 < 16; 5++) гог (С = 9; С < 16; С++) тог (г = 0; г < 16; гъ<) ( ! майе [г] (С! (5] [9! = 5 ' 17; 1вайе[г! [С] [5) [1! = С ' 17; 1вайе[г] [С] [5! [2] = г ' 17; ) !х э- ) И Инициапизация состояния; 30-объект текстурм и его изображение */ чо!О [п11(чо1О) ( 61С1еагСо1ог(9.9, 8.0, 9.0, 0.0); 615нааейоае[(6( РСАТ)! 61Епаще(6( ОЕРТН ТЕ5Т); вахе1вайе(): 61Р1хе15тоге1(6( ОМРАСК А(16МНЕМТ, 1); 116епТехтцгез(1, атехйаве); 6191пбтехтцге(6( ТЕХТОРЕ 30, Сехйаве); 61техРагаветегт(6( ТЕХТОРЕ 30, 6( ТЕХТОРЕ ИВАР 5, 6( ССАНР); 6[техРагавеСегт(6( ТЕХТОРЕ 30, 6( ТЕХТОРЕ ИВАР Т, 6( ССАНР); 6[техрагаветег[(6С ТЕХТОРЕ 30, 6С ТЕХТОРЕ ИРАР Р, 6( ССАНР); 61техРагаветег1(6[ ТЕХТОРЕ ЗО, 6( ТЕХТОКЕ НА6 Р!СТЕР, 6( МЕАРЕЗТ); 61техРагаветегт(6( ТЕХТОИЕ 30, 6( ТЕХТОРЕ Н1М Е1(ТЕР, С йЕАРЕ5Т); 61Тех1ваае30(6( ТЕХТОРЕ 30, 9, 6( Р6В, 1И]ОСЬ, 1Не«ВПС, «Оерсь, О.
6( Р6В, 6( ОН516ме0 Вчте, 1вайе): ь- ,1Х !е[ «е, 1Я, :х- са!е- И У Чтобы заменить все текселы трехмерной текстуры или их часть, используйте комапду а1Тех5ОЫваае30(). чо[г] а1Тех 5 ОЫваке30(С?епшп (агяед С?зпс [еОЕ[, С?[п( хоу[зей С?.[пс уоДзей С?дпС зоуузед С?.5[се] ад<[1)т, С?зеве! )«е[а]тй С?л]се] г?ерт[т, С?.епшп уоггпай С?.епшп Гуре, сопз( С?.чо[с? "(ехе?5); Определяет массив трехмерной текстуры, замещающий собой существующее изображение трехмерной текстуры нли его некусочную область. Аргумент (агие( должен быть установлен в 61 ТЕХТОРЕ 30.
Аргументы [еое[, /оггпас и Гуре используются аналогишо команде 91тех[ваае30(). Аргумент [ере[ — номер уровня детализации М?р-отображения. Аргументы (оггпа( и (уре описывают формат и тип данных изображения текстуры. Для неполных изображений сохраняют силу режимы, установленные е[Р]хе15со ге' (), е1Р! хе1тгап5 тег' (), а также другие операции при передаче пикселов. ,по- «ту Чтобы использовать буфер кадров в качестве исходных данных для замещения существующей трехмерной структуры или ее части, используйте команду 1]Сорутех5ОЫваке30 О. 330 Глава 9 ° наложение текстур то1с( к1соруТех5иЫеаВе30(С1.евши Гагдей СЕ(п( )еое! СЕ1пг хо!)зеГ, С11п( уоЯзес С(зп1 го)(зед 01.!пг х, 01.1п( у, С(.з1ге1 и!г!ГЬ, С1.з1хе1 Ье(яЬ!); Применяет данные изображения из буфера кадров для замены существующего изображения трехмерной текстуры или его некусочной области. Пикселы читаются из текущего буфера 6( МЕАО ВОР РЕР и обрабатываются так, как если бы была вызвана команда В1сору РЗ хе1з (), но вместо поступления в буфер кадров они помещаются в память текстуры.
Сохраняют силу установки для В1Р1хе1Тгалзтег'() и других операций при передаче пикселов. Аргумент Гагпет должен быть установлен в значение 6С ТЕХТОМЕ 30. Аргумент !еое! — номер уровня детализации множественного отображения. Массив парциального изображения текстуры берется из выровненного относительно экрана прямоугольника пикселов с координатами левого нижнего угла (х, у). Ширина (май) и высота (Ье(уЬг) указывают размеры прямоугольника неполного изображения. Аргументы хо(!зег, уоД!зег и георг задают смещение в текселах в пределах существующего массива текстуры, по которому помещается неполное изображение. Поскольку парциальное изображение является двухмерным прямоугольником, замещается только одна вырезка (зрюе) трехмерной текстуры (вырезка, фиксированная по зо(!зеГ).
Режимы хранения Г)икселов для трехмерных текстур Значения переменных режимов хранения пикселов управляют межстрочным пространством для каждого слоя (другими словами, одного двухмерного прямоугольника). Команда 31Р1ХЕ15тоге«() устанавливает эти режимы с помощью таких параметров, как *КО)( ЕЕМОТН, *А(16МНЕМТ, '5К1Р Р1ХЕ(5 и *5К1Р ЯОМ5 (где * — 6( ОМРАСК или 6( РАСК ). Эти параметры управляют обращением к вложенному илн к полному прямоугольнику пикселов или тскселов. (Данные режимы ранее обсуждались в разделе «Режимы хранения пикселов».) Вышеупомянутые режимы сохраняют свою полезность для двух из трех измерений, но появляется потребность в дополнительных режимах для поддержки обращения к вложенным объемам данных трехмерных текстур. За их установку отвечают новые параметры, '1НАОЕ НЕ16НТ и '5К1Р 1НА6Е5, позволяющие подпрограммам В1Тех1ваВеЗО(), В1Тех5иЫеаВеЗО() и 616егтех1еаВе() обращаться к желаемым подобъемам (зцЬто1шпе).