【问题标题】:How to make openGL ES2 background transparent如何使openGL ES2背景透明
【发布时间】:2014-02-12 02:18:13
【问题描述】:

我用的是PowerVR sgx sdk,硬件平台是一个Ti DM8168芯片,上面运行着linux。我做了一个openGL ES2 demo,发现openGL demo的背景总是黑的。我也用openGL sdk编译QT lib和用QGLWidget做一个Qt demo,但是QGLWidget的背景也是黑色的。

glClearColor(0.0f, 0.0f, 0.0f, 0.0f);deo 不起作用。

首先打开fb0,然后画点东西。

然后打开GL绘画。这将覆盖整个屏幕。

在Qt demo中,QGLWidget总是有一个背景覆盖在它后面的Widget。Qt界面不会影响openGL显示。

powerVR的demo里没有讲这个,在嵌入式系统上好像是件难事。

我想要这样的图片,背景是Qwidget菜单,正方形是QGLWidget中的openGL对象,QGLWidget的背景是透明的。

父亲,QT 总是直接渲染 openGL 屏幕,所以渲染内容覆盖了其他底层小部件显示的帧缓冲区。

【问题讨论】:

    标签: qt opengl-es-2.0 powervr-sgx


    【解决方案1】:

    这并不难,而且是可能的。 OpenGL(ESx) 应用程序总是绘制到(全屏)帧缓冲区(当使用 NULL 窗口系统和独立的 openGLESx 应用程序时),或者在使用 QWS 时绘制到 Qt 窗口。

    要使这个窗口透明,您可以执行以下操作:

    (1) 将需要透明的任何内容绘制到 DM8x 的 DSS 中的一个平面上

    (2)在DSS中将背景(非透明)框架绘制到下平面

    现在您可以为每个平面使用全局 Alpha 设置来管理顶层的可见性。有关此方法的示例,请参阅下面的线程。

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

    【讨论】:

    • 先谢谢。但是Qt demo例子,我把QGLWidget放在另一个普通的QWidget上。QGLWidget的背景会覆盖正常的。放入两层不会影响背景。设置QWS背景不影响QGLWidget 的背景。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 2015-07-03
    • 2012-06-26
    相关资源
    最近更新 更多