TL;DR: какие значения фиксируются и при каких обстоятельствах (включенные флаги и типы буферов рендеринга (особенно RGBA_F32)), когда включено смешивание?
- Вывод фрагментного шейдера?
- Факторы смешивания?
- Результат уравнения смешивания?
- Другие?
Механизмы, которые я нашел для зажима:
- Вывод шейдера (через
glClampColor
): похоже, он управляетglReadPixels
, но есть флаги расширенияGL_CLAMP_VERTEX_COLOR
иGL_CLAMP_FRAGMENT_COLOR
, которые делают "что-то". Насколько я могу судить из спецификации расширения, они ограничивают вывод вершинного или фрагментного шейдера. - Вывод шейдера (через рендеринг в фиксированную точку): см. этот ответ, в котором цитируется спецификация GL. .: "Преобразование из значения с плавающей запятой f в соответствующее беззнаковое нормализованное значение с фиксированной точкой c определяется первым закреплением f в диапазоне [0, 1] . . ." Напротив, (предположительно, при записи в цель рендеринга с плавающей запятой) Никол Болас пишет здесь, что "Что записывается фрагментный шейдер всегда будет разблокирован.".
- Подразумеваемое ограничение: из документации для
glBlendFunc
< /a>: "Все масштабные коэффициенты имеют диапазон [0,1]." Означает ли это, что исходный и конечный коэффициенты фиксируются до того, как произойдет уравнение? - Подразумеваемое ограничение: из документации для
glBlendEquation
< /a>: "Для этих уравнений все компоненты цвета имеют значения в диапазоне [0,1]." Означает ли это, что исходный и конечный цвета фиксируются до выполнения уравнения? - Фиксация результата: с той же страницы: "Результаты этих уравнений фиксируются в диапазоне [0,1]."
В моих экспериментах с целью рендеринга RGBA_F32 ни один из этих режимов фиксации не происходит (я подтверждаю это, считывая значения из цели рендеринга с помощью glGetTexImage
). Мне нужно, чтобы (3) произошло, но я прошу разъяснения по документации, чтобы я мог разобраться сам.