QT的QWGLNativeContext類的使用
詳細說明
在帶有桌面OpenGL(opengl32.dll)的Windows上封裝WGL上下文的類。
注意:此類沒有二進位制相容性保證,這意味著使用該類的應用程式僅能與開發時所依據的Qt版本一起使用。
QWGLNativeContext是可以傳遞給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來設定共享並在螢幕外執行基於Qt的渲染。然後,在外部環境中也可以訪問生成的紋理。
...like above...
QOpenGLContext *qtcontext = new QOpenGLContext;
qtcontext->setShareContext(context);
qtcontext->setFormat(context->format());
qtcontext->create();
...use qtcontext for rendering with Qt...
除了與QOpenGLContext :: setNativeHandle()一起使用之外,此類還用於從QOpenGLContext檢索本地上下文控制程式碼,即HGLRC值。呼叫QOpenGLContext :: nativeHandle()返回一個QVariant,在Windows上至少帶有opengl32.dll的QVariant將包含QWGLNativeContext:
QVariant nativeHandle = context->nativeHandle();
if (!nativeHandle.isNull() && nativeHandle.canConvert<QWGLNativeContext>()) {
QWGLNativeContext nativeContext = nativeHandle.value<QWGLNativeContext>();
HGLRC hglrc = nativeContext.context();
...
}
相關文章
- QT的QImage類的使用QT
- QT的QAxBase類的使用QT
- QT的QProgressDialog類的使用QT
- qt -- QString類及常用函式功能的使用QT函式
- QT中類之間的關係圖QT
- C++ Qt開發:使用順序容器類C++QT
- C++ Qt開發:使用關聯容器類C++QT
- QT視窗類QT
- QT中 uic 工具的使用QTUI
- Qt QApplication 類簡介--Qt 類簡介專題(四)QTAPP
- Qt中的定時器的使用QT定時器
- Qt事件過濾器的使用QT事件過濾器
- QT - 13.1.1 ListView 的簡單使用QTView
- Qt Creator 提供的預設基類只有三種QT
- 在Qt裡使用QSplashScreen類製作Splash啟動視窗QT
- Qt容器類QList、QLinkedList和QVector類QT
- QT5.9關於QMenuBar的使用QT
- Qt qAbs、qMax、qRound和qSwap的使用QT
- Qt中MainWindow類例項QTAI
- Qt中的佈局淺析與彈簧的使用,以及Qt居中的兩種方法QT
- QT執行緒的使用 moveToThread()QT執行緒thread
- Qt中(圖片)資源的使用方式QT
- Random 類的使用random
- File類的使用
- Qt 字型(04):QFont類【官翻】QT
- Qt類繼承關係圖QT繼承
- Qt-pyqt6與QTDesginers的相互使用技巧QT
- Qt入門(13)——Qt的呼叫退出QT
- Qt 報錯 “類名”does not name a typeQT
- python類的使用Python
- xUtils類庫的使用
- 【QT】 Qt多執行緒的“那些事”QT執行緒
- 已經編譯好的opencv QT creator直接使用編譯OpenCVQT
- 使用QT-QSerialport打不開串列埠的原因QT串列埠
- autohotkey qt程式中無法使用的問題QT
- QT使用 http 協議通訊的實現示例QTHTTP協議
- Qt三大視窗基類的差別QMainWindow QWidget QDialogQTAI
- 【Qt6】QWindow類可以做什麼QT