i 3Dlabs. Веб-сайт компании (http://www.3dLabs.com/support/developer).

2. Kcrnighan В., Ritchie D. The С Programming Language. 2nd ed. Englewood Cliffs, NJ: Prentice Hall, 1988.

3. Kessenich J., Baldwin D., Rost R. The OpenGL Shading Language, Version 1.051 / SDlabs. 2003 (http://www.3dlabs.com/support/developer/ogL2).

4. OpenGL Architecture Review Board: спецификация расширения ARB_vertex_sha-саг, реестр расширений OpenGL (http://oss.sgi.соm/projects/ogL-sam pLe/registry).

5. OpenGL Architecture Review Board: спецификация расширения ARB_fragment_sha-der, реестр расширений OpenGL (http://oss.sgi.com/projects/ogl-sampLe/registry).

6. OpenGL Architecture Review Board: спецификация расширения ARB_shader_ob-jects, реестр расширений OpenGL (http://o55.sgi.com/projects/ogL-sampLe/regis-try).

7. Segal M„ Akeley K. The OpenGL Graphics System: A Specification (Version 1.5) / Ed.: Ch. Frazier (v. LI), J. Leech (v. 1.2-1.5). 2003 (http://opengL.org).

8. Stroustrup B. The C++ Programming Language. Special 3rd ed. Reading, MS: Addison-Wesley, 2000.

Программируемая часть операций OpenGL1

Язык шейдеров OpenGL был создан специально для работы с OpenGL. Входные и выходные данные для вершинного и фрагментного шейдеров были встроены в стандартную последовательность операций OpenGL в строго определенной форме. Место программируемых процессоров в последовательности операций OpenGL описано в разделе 2.3. В данной главе обсуждаются подробности интегрирования шейдеров и механизмы языка, позволяющие это сделать.

Приложения передают данные шейдеру посредством определенных разработчиком attribute- и uniform-переменных. Язык предоставляет также встроенные переменные для передачи данных между программируемыми процессорами и стандартной функциональностью следующим образом.

□ Стандартные атрибуты OpenGL можно получить из вершинного шейдера с помощью встроенных attribute-переменных.

□ Состояния OpenGL доступны как из вершинного, так и из фрагментного шейдеров через встроенные uniform-переменные.

□ Вершинные шейдеры передают данные для последующей обработки через специальные встроенные выходные переменные вершинного шейдера и встроенные varying-переменные.

□ Фрагментные шейдеры получают результаты предварительной обработки через встроенные входные переменные фрагментного шейдера и встроенные varying-переменные.

□ Фрагментные шейдеры возвращают результаты вычислений через специальные выходные переменные фрагментного шейдера.

Встроенные константы доступны из обоих видов шейдеров, они определяют некоторые платформозависимые значения, доступные посредством функции gl Get. Все встроенные идентификаторы начинаются с префикса д1_.

4.1, Вершинный процессор

На вершинном процессоре и выполняется вершинный шейдер, который замещает стандартную обработку вершин в OpenGL, отличительные особенности которой перечислены далее (вершинный шейдер не может определить, примитиву какого типа принадлежит вершина):


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