Из-за плохой производительности (высокой загрузки процессора) в моем Qt3DOffscreenRenderer, который использует инфраструктуру Qt3D, я реализовал новый внешний редактор, используя только / в основном OpenGL.
К сожалению, я не могу получить объект, нарисованный поверх фонового изображения, должен быть прозрачным. Я включил смешение и установил glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
.
В результате получилось следующее:
То, что вы не видите, это то, что пиксель пикселей Qt-логотипа равен 0,5.
Для справки это изображение без прозрачности:
Я просто хочу, чтобы логотип Qt был немного прозрачным, например:
Мне удалось создать это изображение с помощью этого примера и модифицировать его для использования упомянутой выше функции blend и альфа-значения 0,5 в шейдере.
Как я могу добиться этого для внешнего рендеринга? Я экспериментировал с множеством параметров, но не повезло.
Проблема заключалась в том, что я установил внутренний формат текстур
QFramebufferObjectFormat
вGL_RGBA32F
, но он должен бытьGL_RGB32F
(т.е. без альфа-канала).