那如何将QWindow中的创建的EGL的eglsurface 显示到QMainWindow中去呢
时间: 2023-06-13 20:04:10 浏览: 201
marktext的中文包
要将一个EGLSurface显示到QMainWindow中,你需要将EGLSurface与QWindow的OpenGL context进行共享,并在QMainWindow的OpenGL context中使用共享的EGLSurface。具体步骤如下:
1. 在QMainWindow中创建一个QOpenGLWidget,并获取它的OpenGL context,以便后面使用。
2. 在QWindow中创建一个EGLSurface,并将它与QWindow的OpenGL context进行共享,这里需要使用EGL_KHR_image_base扩展。具体步骤如下:
(1)在QWindow的OpenGL context中创建一个EGLImage,并将EGLImage的数据绑定到QWindow的纹理上。
(2)使用EGL_KHR_image_base扩展中的eglCreatePlatformPixmapSurface函数创建一个共享的EGLSurface,并将EGLImage和QWindow的OpenGL context传入该函数中。
(3)使用eglMakeCurrent函数将共享的EGLSurface绑定到QWindow的OpenGL context中。
3. 在QOpenGLWidget的paintGL函数中使用QMainWindow的OpenGL context绘制场景,并将共享的EGLSurface作为纹理绑定到场景中。
4. 在QMainWindow中调用QOpenGLWidget的update函数,以便触发QOpenGLWidget的paintGL函数重新绘制场景。
需要注意的是,这里使用的是EGLSurface而不是QWindow,所以你需要将QWindow的坐标转换为EGLSurface的坐标,以便正确地绘制共享的EGLSurface。
以上是一般的思路,具体实现还需要根据你的具体需求进行调整。
阅读全文