Well, there’s no nice solution since QOffscreenSurface is backed by a window, not a pbuffer on Windows. (arguably this should be changed in some future release, for ANGLE at least, but that won’t help you now)
You can make a QOpenGLContext current with a QOffscreenSurface, then call eglMakeCurrent directly with the pbuffer surface and the EGLContext you dig out from the QOpenGLContext. This way Qt’s tracking will be correct (when it comes to the current QOpenGLContext) too. This is apparently exactly what you are doing already. As for the multisample issues, it could be that multisampling is not supported for pbuffers. As a workaround you could render into an FBO with a multisample renderbuffer (assuming that’s supported) and then blit that into the default framebuffer (FBO 0) of the pbuffer surface. BR, Laszlo From: interest-bounces+laszlo.agocs=theqtcompany....@qt-project.org [mailto:interest-bounces+laszlo.agocs=theqtcompany....@qt-project.org] On Behalf Of Thomas Sevaldrud Sent: 29. september 2015 15:24 To: Interest@qt-project.org Subject: Re: [Interest] Setting current QOpenGLContext with an EGLContext It works if I add a dummy OffscreenSurface and make my context current on this before making the PBuffer current. Not sure if this is the best way of doing it though? - Thomas On Tue, Sep 29, 2015 at 11:37 AM, Thomas Sevaldrud <tho...@silentwings.no<mailto:tho...@silentwings.no>> wrote: Hi, I'm still working on the EGL PBuffer/DirectX integration through Qt that I posted about last week :-) Thanks to good help from this list I now have the PBuffer and DirectX texture set up with the share handle. I also have a QOpenGLContext which I have used to set up the EGL PBuffer. I don't have a QSurface though, since my surface is the EGL PBuffer. So, the question now is how do I make the QOpenGLContext current. (I need a QOpenGLContext::currentContext() for QOpenGLFunctions and so on). The code looks something like this: glContext_ = new QOpenGLContext; glContext_->setFormat(format); glContext_->create(); .... QPlatformNativeInterface *nativeInterface = QGuiApplication::platformNativeInterface(); egl_display_ = static_cast<EGLDisplay>(nativeInterface->nativeResourceForContext("eglDisplay", glContext_)); egl_context_ = static_cast<EGLContext>(nativeInterface->nativeResourceForContext("eglContext", glContext_)); EGLConfig egl_config = static_cast<EGLConfig>(nativeInterface->nativeResourceForContext("eglConfig", glContext_)); EGLint attribs[] = { ... }; egl_pbuffer_ = eglCreatePbufferSurface(egl_display_, egl_config, attribs); ... D3D setup stuff... // Start rendering to PBuffer: eglMakeCurrent(egl_display_, egl_pbuffer_, egl_pbuffer_, egl_context_); ... Here I should like to set glContext current somehow... Any ideas? - Thomas
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest