Как смешать цвета текстуры с простым умножением на цвета под ним? - PullRequest
1 голос
/ 04 августа 2011

Итак, я хочу, чтобы цвета моей текстуры умножались на цвета под ней, как это можно сделать с помощью glBlendFunc ()?

Например: если у меня есть цвет текстуры (0,31, 0,51, 0,124) и под ним есть цвет (0,83, 0,64, 0,12), то результирующий цвет будет 0,31 * 0,83, 0,51 * 0,64, 0,124 * 0,12 , Как это сделать?

1 Ответ

3 голосов
/ 04 августа 2011

Итак, я хочу, чтобы цвета моей текстуры умножались на цвета под ней, как это можно сделать с помощью glBlendFunc ()?

Под "текстурами цветов" я буду подразумевать, что вы имеете в виду "вывод цветов в процессе glTexEnv". Или, используя более строгий язык спецификаций OpenGL, цвет фрагмента.

В любом случае, это простой вопрос смешивания . Если вы используете OpenGL 2.1 или выше:

glBlendEquationSeparate(GL_FUNC_ADD, GL_FUNC_ADD); //No, that's not a typo. Read the wiki article.
glBlendFuncSeparate(GL_DST_COLOR, GL_ZERO, GL_DST_ALPHA, GL_ZERO);

Это приводит к тому, что цвет назначения (который находится в кадровом буфере) умножается на цвет источника (что происходит из glTexEnv) и добавляется к нулю (технически, ноль умножается на цвет назначения).

...