OpenGL прозрачные объекты поверх фонового изображения

HappyFeet спросил: 12 мая 2018 в 05:20 в: c++

Из-за плохой производительности (высокой загрузки процессора) в моем Qt3DOffscreenRenderer, который использует инфраструктуру Qt3D, я реализовал новый внешний редактор, используя только / в основном OpenGL.

К сожалению, я не могу получить объект, нарисованный поверх фонового изображения, должен быть прозрачным. Я включил смешение и установил glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);.

В результате получилось следующее:

То, что вы не видите, это то, что пиксель пикселей Qt-логотипа равен 0,5.

Для справки это изображение без прозрачности:

Я просто хочу, чтобы логотип Qt был немного прозрачным, например:

Мне удалось создать это изображение с помощью этого примера и модифицировать его для использования упомянутой выше функции blend и альфа-значения 0,5 в шейдере.

Как я могу добиться этого для внешнего рендеринга? Я экспериментировал с множеством параметров, но не повезло.


1 ответ

Есть решение
HappyFeet ответил: 12 мая 2018 в 05:36

Проблема заключалась в том, что я установил внутренний формат текстур QFramebufferObjectFormat в GL_RGBA32F, но он должен быть GL_RGB32F (т.е. без альфа-канала).