Как преобразовать два прозрачных объекта буфера кадра с помощью QOpenGLFramebufferObject? - PullRequest
1 голос
/ 12 июля 2020

У меня есть два FBO, созданных с использованием QOpenGLFrameBufferObject, которые представляют собой изображения с прозрачным фоном и несколькими строками и текстом поверх них. Я копирую первый fbo на второй, используя QOpenGLFramebufferObject :: blitFramebuffer , это приводит к тому, что содержимое первого fbo располагается поверх второго. Однако я хотел бы сохранить прозрачность первого fbo и наложить содержимое первого fbo поверх второго fbo (вместо того, чтобы стирать часть второго fbo и перерисовывать первый fbo поверх него). Оглядываясь вокруг, я думаю, что это могло бы быть возможно с glBlendFun c, но следующее на самом деле не дало желаемого результата.

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// then blit fbo1 on top of fbo2
QOpenGLFramebufferObject::blitFramebuffer(fbo2, fbo1);

Как сохранить прозрачность ( смешивая их вместе) моих кадровых буферов, когда я их копирую?

1 Ответ

1 голос
/ 12 июля 2020

Вы не можете glBlitFramebuffer - это операция копирования, которая не смешивает исходный и целевой фрагменты. Возможна визуализация в текстуру (см. Объект фреймбуфера - Присоединение изображений ). Наконец, вы можете визуализировать прямоугольник экранного пространства и смешать текстуру с целевым фреймбуфером.

...