在具有桌麵 OpenGL (opengl32.dll) 的 Windows 封裝 WGL 上下文的類。 更多...
| 頭: | #include <QWGLNativeContext> |
| Since: | Qt 5.4 |
| QWGLNativeContext () | |
| QWGLNativeContext (HGLRC ctx , HWND wnd ) | |
| HGLRC | context () const |
| HWND | window () const |
在具有桌麵 OpenGL (opengl32.dll) 的 Windows 封裝 WGL 上下文的類。
注意: 此類沒有二進製兼容性保證,意味使用它的應用程序隻保證能工作於針對它開發的 Qt 版本。
QWGLNativeContext is a value class that can be passed to QOpenGLContext::setNativeHandle ()。當創建 QOpenGLContext 采用本機句柄設置,不會創建新的上下文。相反,使用提供句柄,無需擁有所有權。這允許包裹由外部框架或渲染引擎創建的上下文。典型用法類似以下代碼片段:
#include <QtPlatformSupport/QWGLNativeContext> ...create and retrieve the WGL context and the corresponding window... QOpenGLContext *context = new QOpenGLContext; QWGLNativeContext nativeContext(hglrc, hwnd); context->setNativeHandle(QVariant::fromValue(nativeContext)); context->create(); ...
窗口是需要的,因為會查詢其像素格式。當采納成功時, QOpenGLContext::format () 會返迴 QSurfaceFormat 描述此像素格式。
推薦限定這種方式創建的 QOpenGLContexts 的用法。各種平颱特定行為和問題可能阻止這種上下文,以使由 Qt 創建的窗口 (錶麵) 成為當前 (例如:由於像素格式不匹配)。潛在的更安全解決方案是僅使用包裹上下文以設置共享並履行基於 Qt 的離屏渲染,使用單獨、專用 QOpenGLContext 。接著,還可在外來上下文中訪問結果紋理。
...like above... QOpenGLContext *qtcontext = new QOpenGLContext; qtcontext->setShareContext(context); qtcontext->setFormat(context->format()); qtcontext->create(); ...use qtcontext for rendering with Qt...
除瞭用於 QOpenGLContext::setNativeHandle (),此類還可用於檢索本機上下文句柄 (即:HGLRC 值),從 QOpenGLContext 。調用 QOpenGLContext::nativeHandle () 返迴 QVariant which, on Windows with opengl32.dll at least, will contain a QWGLNativeContext :
QVariant nativeHandle = context->nativeHandle(); if (!nativeHandle.isNull() && nativeHandle.canConvert<QWGLNativeContext>()) { QWGLNativeContext nativeContext = nativeHandle.value<QWGLNativeContext>(); HGLRC hglrc = nativeContext.context(); ... }
另請參閱 QOpenGLContext::setNativeHandle () 和 QOpenGLContext::nativeHandle ().
構造沒有句柄的新實例。
構造新實例采用提供 ctx 上下文句柄和 wnd 窗口句柄。
注意: 窗口的指定通過 wnd 必須將其像素格式設為兼容上下文格式。若未在屬於窗口的任何設備上下文中調用 SetPixelFormat(),采納上下文會失敗。
返迴 WGL 上下文。
注意: 窗口句柄不可用當 QWGLNativeContext 是常規查詢,不采納 QOpenGLContext 使用 QOpenGLContext::nativeHandle ()。這是因為 windows 平颱插件創建 WGL 上下文使用之後將不可用的虛設窗口。相反,可查詢 HWND (本機窗口句柄) 從 QWindow via QPlatformNativeInterface::nativeResourceForWindow() using the "handle" 資源鍵。注意:不管怎樣,窗口不會擁有其像素格式設置,直到它首先關聯上下文憑藉 QOpenGLContext::makeCurrent ().
返迴為其創建上下文的窗口句柄。