После выбора конкретного цвета (передней или задней стороны) его значение приводится к значению из диапазона [0, 1 ] и перед интерполяцией переводится в формат числа с фиксированной точкой (обычные операции OpenGL). Если требуется более высокая точность или динамический диапазон цвета, приложение должно использовать собственные varying-nepeMei-шые вместо встроенных gl _Col ог. В этом случае цвет передней/задней стороны выбираться не будет, зато встроенная переменная gl _Front -Facing для фрагментного шейдера будет хранить флаг, обозначающий, к какому именно примитиву принадлежит растеризованный фрагмент: переднему или заднему.

4.5.2. Режим размера точки Вершинные шейдеры могут работать в режиме размерности точки. Размеры точки вычисляются в пикселах и записываются во встроенную переменную gl_Poi ntSi ze.

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

Если этот режим включен, размер точки берется из указанной переменной и используется на этапе растеризации, если же выключен - из значения, установленного командой glPointSize. Если gl_PointSize не устанавливается шейдером, но режим включен, размер точки получается неопределенным. Включить или отключить этот режим можно функциями gl ЕпаЫ е и gl Di sabl е с соответствующей константой GL_VERTEX_PROGRAM__POINT_SIZE_ARB.

Установленный размер точки по умолчанию удобен для приложений, которые не меняют этот размер внутри шейдера. Вообще большинство вершинных шейде-ров не заботятся о размере точки и ничего не записывают в gl_PointSize, в таких случаях при растеризации используется значение, ранее установленное функцией gl Poi ntSIze.

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


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