Зажимает ли OpenGL вывод каждой стадии текстуры? - PullRequest
3 голосов
/ 09 февраля 2012

При использовании мультитекстурирования с фиксированной функцией OpenGL 1.4, выводятся ли выходные данные каждой ступени текстуры на [0, 1] перед передачей на следующие ступени?

spec говорит (стр. 153):

Если значение TEXTURE_ENV_MODE равно COMBINE, форма функции текстуры зависит от значений COMBINE_RGB и COMBINE_ALPHA в соответствии с Таблица 3.24. Результаты RGB и ALPHA функции текстуры затем умножаются на значения RGB_SCALE и ALPHA_SCALE соответственно. Результаты зажимается до [0, 1].

Но в моем тесте этого не произошло. Моя текстурная среда для компонентов RGB:

  • Стадия 1: вычтите GL_CONSTANT из GL_TEXTURE, где вся текстура черная, а цвет GL_CONSTANT (.5, .5, .5, 1.0)
  • Этап 2: Добавьте GL_TEXTURE в GL_PREVIOUS, где текстура является тестовой радугой.

Вывод становится заметно темнее, чем ярче я делаю цвет GL_CONSTANT для Stage 1.

Есть ли какое-то состояние, которое я могу разрешить, чтобы получить ожидаемый зажим?

Ответы [ 2 ]

4 голосов
/ 09 февраля 2012

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

В любом случае, вы мало что можете сделать. Если ваша реализация не сжимается так, как указано в спецификации, лучшее, что вы можете сделать, это отправить в нее отчет об ошибке.

0 голосов
/ 01 августа 2016

Да.В спецификации главы 3.8.13 говорится:

Cf и Af - основные компоненты цвета входящего фрагмента;Cs и As являются компонентами исходного цвета текстуры, полученными из отфильтрованных значений текстуры Rt, Gt, Bt, At, Lt и It, как показано в таблице 3.21;Cc и Ac являются компонентами цвета текстурного окружения;Cp и Ap - компоненты, полученные из предыдущей текстурной среды (для текстурной среды 0 Cp и Ap идентичны Cf и Af соответственно);Cv и Av - это основные компоненты цвета, вычисленные с помощью функции текстуры.

Все эти значения цвета находятся в диапазоне [0; 1].Функции текстуры указаны в таблицах 3.22, 3.23 и 3.24.

Я бы не знал о вашем конкретном случае, но он отвечает на ваш первый (и заглавный) вопрос.

...