1
Я хочу использоватьИспользование множественного blendfunc OpenGL
glBlendFunc(GL_ONE, GL_ONE)
и
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
одновременно. Это возможно?
Я хочу использоватьИспользование множественного blendfunc OpenGL
glBlendFunc(GL_ONE, GL_ONE)
и
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
одновременно. Это возможно?
Вы можете создать заставку Framebuffer Object с прикрепленной к ней текстурой. Выполните первый рендер, используя glBlendFunc(GL_ONE, GL_ONE)
, затем переверните входные и выходные текстуры и выполните вторую визуализацию с помощью glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
.
Возможно ли это при одновременном подключении обеих текстур (цветное прикрепление 0 и 1), шейдер, выводящий одинаковый цвет для обоих, и использование двух отдельных комбинаций смешивания для вложений? – leemes
@leemes функции blend являются глобальными, они применяются ко всему. Если вы хотите сделать отдельное смешение, вам придется реализовать его отдельно в своем шейдере. –
Как реализовать смешение в шейдере? AFAIK, шейдер выводит цвет (vec4), который смешивается с конвейером * unprogrammable * render, используя функцию blend func, установленную в главной программе. Конечно, у меня может быть один буфер с предварительной мультиплексированной альфой, второй с «нормальным» альфа-смешиванием, просто выбрав функцию blend, которая работает для премультиплексированной альфы и вручную превзошла альфа-значение второму цвету в шейдере. Но есть сценарии, в которых это не вариант, например. когда я хочу только суммировать цвета во втором буфере, но первый должен делать «нормальное» альфа-смешение. – leemes