3. Introduction to Computer Graphics/J, D. Foley, A. van Dam, S. K. Feiner, at al. Reading, MS: Addison-Wesley, 1994.
4. Computer Graphics: Principles and Practice. 2nd ed./J. D. Foley, A. van Dam, S. K. Feiner, J. H. Hughes. Reading, MS: Addison-Wesley, 1996.
5. Neider J„ Davis Т., Woo M. OpenGL Programming Guide. 3rd ed. Reading, MS: Addison-Wesley, 1999.
6. OpenGL Reference Manual: The Official Document to OpenGL, Version 1.2.3rd ed. Reading, MS: Addison-Wesley, 1999.
7. Segal M., Akeley K. The OpenGL Graphics System: A Specification (Version 1.5)/ Ed.: Ch. Frazier (v. 1.1), J. Leech (v. 1.2-1.5). 2003 (http://opengL.org).
Шейдеры с сохранением данных в текстурах
Работа с текстурами - очень мощный механизм, встроенный в OpenGL. Когда OpenGL только формировался (1992 г.), аппаратное обеспечение для работы с текстурами начинало появляться в коммерческих продуктах. В настоящее время текстурное отображение доступно во всех графических акселераторах, даже самых простых.
В версии OpenGL 1.0 текстурное отображение было определено с узкими ограничениями. Это просто был способ наложить изображение на поверхность объекта. С тех пор аппаратное обеспечение стало гораздо более совершенным, и было придумано много способов использования текстур. Определение текстуры в OpenGL также было расширено. Текстурные объекты - одно из ключевых дополнений к OpenGL 1.1. Трехмерные текстуры стали частью стандарта в OpenGL 1.2. Возможность аппаратного обеспечения обращаться к двум и более текстурам одновременно проявились в OpenGL 1.3 вместе с кубическими текстурами и возможностью поддержки форматов сжатия текстур. В OpenGL 1.4 была добавлена поддержка текстур глубины и тени, автоматическое множественное отображение текстур и другие возможности (например, зеркальное повторение). Краткий обзор текстур, используемых в OpenGL, читатель может найти в разделе 1.10.
Программируемость, появившаяся с созданием языка шейдеров OpenGL, позволяет пользоваться текстурами более широко. Используя программируемые тендеры, приложение может считывать значения с любого количества текстур к применять их как угодно. Можно работать по сложным алгоритмам, в которых результаты обращения к одной текстуре используются для определения параметров доступа к другой текстуре. Также можно хранить в текстурах промежуточные результаты рендеринга, использовать их как таблицы для поиска (представление сложных функций), для хранения нормалей, их отклонений, значений блеска, информации о видимости, полиномиальных коэффициентов и многих других данных. Делать это, конечно, не так легко, как работать с текстурами обычным способом, и такая гибкость обозначает также, что текстурные карты в некотором смысле уже являются памятью общего назначения, в которой можно хранить что угодно. (Фильтрация и наложение все еще отличают доступ к текстурной карте от доступа к обычной памяти.)