glBlendFunc и альфа-канал - PullRequest
       22

glBlendFunc и альфа-канал

1 голос
/ 02 мая 2011

Я пытаюсь визуализировать некоторые прозрачные объекты, используя:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

Однако я не получаю желаемый результат.

Я рисую полностью непрозрачный квадрат, а затем рисую полупрозрачный квадрат. Цвета такие же, как и следовало ожидать, однако альфа-канал НЕ полностью белый, как я хочу.

В основном я хочу следующее уравнение:

r = old_r*(1.0-a)+r*a;
g = old_g*(1.0-a)+g*a;
b = old_b*(1.0-a)+b*a;
a = old_a + a;

Этого можно добиться с помощью glBlendFunc или мне нужно прибегнуть к шейдерам и нескольким FBO для чтения?

Ответы [ 2 ]

7 голосов
/ 02 мая 2011

В основном вам нужны отдельные функции наложения для цвета и альфа, и это достигается с помощью glBlendFuncSeparate :

glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE);

Имеет ли функция наложения нужную вам функцию.

0 голосов
/ 02 мая 2011

Просто нарисуйте свой непрозрачный квадрат, затем проверьте альфа-канал.Если при рендеринге известного непрозрачного квадрата он не отображается полностью белым, у вас могут быть проблемы с некоторыми другими настройками.

...