1

我正在尝试为嵌入式 Linux 的 Qt 编写一个 QScreen 驱动程序,以便能够在帧缓冲区上集成 OpenGL 功能。目前,我的驱动程序在屏幕上同时拥有两个 QWS 窗口和 EGL 表面。我使用方法exposeRegion、blit 和solidFill 的默认实现。不幸的是,我注意到如果我尝试在 EGL 表面上放置 QWS 窗口,我会发现 EGL 表面总是在 QWS 窗口之上。

当 EGL 表面不是顶层窗口时,是否有可能以某种方式允许 QWS 窗口越过 EGL 表面?我怎样才能做到这一点?

我知道 OpenGL 直接绘制到屏幕上,但我认为中断刷新过程应该允许 QScreen 驱动程序在其上绘制窗口,但这似乎没有发生。

谢谢!

4

1 回答 1

2

以防万一其他人感兴趣,可以这样做。我不能仅仅因为需要覆盖其他一些功能。就我而言,这是缺失的:

bool CompositeGLScreen::chooseContext(QGLContext *context, const QGLContext *shareContext)
{
    Q_UNUSED(context);
    Q_UNUSED(shareContext);
    return false;
}

Qt 的 PowerVR 参考实现就是这样做的。

于 2011-05-14T09:54:31.430 回答