.6. Установка атрибутов вершин Один из способов передать данные о вершинах в OpenGL - вызвать gl Begi п, затем «нужной последовательности функции gl Col or/gl Normal /gl Vertex и т. д., завершив эту последовательность вызовом функции gl End.

Все эти вызовы продолжают работать и в программируемой среде OpenGL. Как и раньше, функция gl Vertex позволяет сообщить, что данные для некоторой точки переданы и должны быть обработаны. Однако если функцией glUsePro-gremObjectARB в среде установлен правильный вершинный шейдер, данные о вершинах будут обрабатываться этим шейдером. Вершинный шейдер работает с данными о вершине через встроенные переменные б Зак. 218

API языка тендеров OpenGL

attribute vec4 gl_Color: attribute vec4 gl^SecondaryColor; attribute vec3 gl_Normal; attribute vec4 gl_Vertex: attribute vec4 glJIultiTexCoordO: attribute vec4 g1_MultiTexCoordl: attribute vec4 gl_MultiTexCoord2;
attribute vec4 gl_FogCoord:

Интерфейс OpenGL «вершина за раз» простой и действенный, но в современных системах является не самым лучшим решением, поскольку требует больших затрат времени для передачи данных графическому ускорителю. Лучше вместо него использовать массивы вершин. Этот интерфейс позволяет заносить данные о вершинах в массивы и затем сообщать OpenGL указатели на эти массивы. Вместо того чтобы посылать OpenGL данные для одной вершины, можно передать за один раз целый набор примитивов. Возможно, в целях увеличения производительности массивы для хранения данных о вершинах будут располагаться даже в видеокарте.

Интерфейс массивов вершин в программируемой среде OpenGL работает точно так же, как и обычно. Когда в OpenGL устанавливается массив вершин, данные о вершинах обрабатываются последовательно, вершина за вершиной, как в методе «вершина за раз». Если вершинный шейдер активен, каждая вершина будет им обрабатываться.

Однако новые возможности программируемое™ позволяют приложению не ограничиваться обычными атрибутами, определенными в OpenGL. Существует много дополнительных атрибутов вершин, которые, возможно, потребуется передать от приложения вершинному шейдеру.


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