Как сделать фон openGL ES2 прозрачным

Я использую PowerVR sgx sdk, а аппаратная платформа представляет собой чип Ti DM8168 с запущенным на нем linux. Я делаю демо openGL ES2 и обнаружил, что фон демо openGL всегда черный. Я также компилирую QT lib с openGL sdk и делаю Qt демо с QGLWidget, но фон QGLWidget также черный.

glClearColor (0.0f, 0.0f, 0.0f, 0.0f); део не работают.

сначала откройте fb0, и что-нибудь нарисуйте.

затем откройте GL painting. Это покроет весь экран.

В демоверсии Qt QGLWidget всегда имеет фоновую обложку, за которой скрывается виджет. Интерфейс Qt не может влиять на показ openGL.

Демонстрация powerVR не говорила об этом. Это кажется сложной задачей во встроенной системе.

Я хочу, чтобы, подобно этой картинке, фон был меню Qwidget, а квадрат - это объект openGL в QGLWidget, а фон QGLWidget - прозрачный.

Отец, QT всегда напрямую рендерит экран openGL, поэтому контент рендеринга покрывает кадровый буфер, где отображаются другие виджеты под слоями.

1 ответ

Это не сложно и возможно. Приложение OpenGL(ESx) всегда рисует либо в (полноэкранный) кадровый буфер (при использовании оконной системы NULL и автономного приложения openGLESx), либо в окно Qt при использовании QWS, как в вашем случае.

Чтобы сделать это окно прозрачным, вы можете сделать следующее:

(1) Нарисуйте все, что вам нужно, чтобы быть прозрачным, на одну из плоскостей в DSS DM8x

(2) Нарисуйте фоновый (непрозрачный) кадр в нижней плоскости в DSS

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

http://e2e.ti.com/support/embedded/linux/f/354/t/70597.aspx

Другие вопросы по тегам