通过SDL渲染QtQuick GUI

时间:2015-07-28 14:04:42

标签: qt sdl qt-quick

尝试将QML用户界面呈现到SDL窗口中。

有一个SDL 1.2游戏通过SDL_SetVideoModeSDL_OPENGLBLIT标志创建OpenGL上下文。

我们的想法是获取OpenGL上下文句柄并将其传递给将在场景中绘制GUI的QQuickRenderControl。

获取本机上下文(X11的示例):

GLXContext currentContext;
SDL_SysWMinfo wmInfo;
SDL_VERSION(&wmInfo.version);
if (SDL_GetWMInfo(&wmInfo))
{
    Display *display = wmInfo.info.x11.gfxdisplay;
    currentContext = glXGetCurrentContext();
    assert(currentContext);
}

在Qt中采用它:

QOpenGLContext *ctx = new QOpenGLContext;
ctx->setNativeHandle(QVariant::fromValue<QGLXNativeContext>(
    QGLXNativeContext(currentContext, wmInfo.info.x11.display, wmInfo.info.x11.window)
));

创建QQuickRenderControl:

QQuickRenderControl *renderControl = new QQuickRenderControl;
renderControl->initialize(ctx);

但如果没有QWindow,QQuickRenderControl就无法启动:

QQuickRenderControl::initialize called with no associated window

ctx->isValid()ctx->makeCurrent()也会返回false。

如何让它发挥作用?

0 个答案:

没有答案