□ Если вершинный шейдер использует определенные разработчиком attribute-переменные, их индексы можно устанавливать до компоновки функцией gl Bi nd7.1. Создание шейдерных объектов

AttribLocationARS либо они будут назначаться автоматически во время компоновки и тогда узнать их можно с помощью функции gl GetAtt ri bLocati onARB. Произвольные атрибуты вершин могут быть переданы в вершинный шейдер функцией glVertexAttribARB или совместным использованием функций gl Vertex Attri bPoi nterARB и gl Enabl eVertexArrayPoi nter для массивов вершин.

7.1. Создание шейдерных объектов

API языка шейдеров OpenGL сконструировано так, чтобы использование последнего походило на работу с языками С и С++: первый этап - создание исходного кода, потом его компиляция и компоновка отдельных модулей и, наконец, выполнение кода.

Чтобы поддерживать принцип высокоуровневости языка шейдеров OpenGL, яужно обеспечить создание хранилища для исходного кода, скомпилированного й выполняемого кода. Решение проблемы - определение двух новых структур данных (объектов) в OpenGL. В этих объектах могут храниться данные, и операции над объектами (для задания исходного кода, компиляции, компоновки и выполнения) уже определены. При создании объекта OpenGL возвращает его идентификатор, который затем используется для выполнения операций над объектом, установки или считывания параметров объекта.

Сначала нужно создать шейдерный объект. При этом создается структура данных, управляемая OpenGL, которая затем используется для хранения исходного кода шейдера. Шейдер создается функцией

GlhandleARB gKreateShaderObjectARBCGLenum shâderType)

Эта функция создает пустой шейдерный объект и возвращает его идентификатор. Шейдерный объект используется для хранения строк исходного кода шейдера. shâderType определяет тип создаваемого шейдера. В данный момент поддерживаются два типа шейдеров. Шейдер типа GL_vERTEX_SHADER_ARB предназначен для запуска на программируемом вершинном процессоре, его выполнение заменяет стандартную обработку вершин в OpenGL. Шейдер типа GL_FRAGMENT_SHADER_AKB предназначен для запуска на программируемом фрагментом процессоре, его выполнение заменяет стандартную обработку фрагментов в OpenGL.


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