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的QProgressDialog類的使用QT
- QT的QAxBase類的使用QT
- qt -- QString類及常用函式功能的使用QT函式
- C++ Qt開發:使用順序容器類C++QT
- C++ Qt開發:使用關聯容器類C++QT
- QT視窗類QT
- QT - 13.1.1 ListView 的簡單使用QTView
- QT執行緒的使用 moveToThread()QT執行緒thread
- Qt事件過濾器的使用QT事件過濾器
- Qt容器類QList、QLinkedList和QVector類QT
- Qt qAbs、qMax、qRound和qSwap的使用QT
- QT5.9關於QMenuBar的使用QT
- Qt中的佈局淺析與彈簧的使用,以及Qt居中的兩種方法QT
- File類的使用
- Random 類的使用random
- String類的使用
- NavigableMap類的使用
- python類的使用Python
- Qt三大視窗基類的差別QMainWindow QWidget QDialogQTAI
- Qt 字型(04):QFont類【官翻】QT
- Qt-pyqt6與QTDesginers的相互使用技巧QT
- autohotkey qt程式中無法使用的問題QT
- 包裝類的使用
- String類的使用2
- Qt 報錯 “類名”does not name a typeQT
- QT使用 http 協議通訊的實現示例QTHTTP協議
- 已經編譯好的opencv QT creator直接使用編譯OpenCVQT
- python中calss(類)的使用,類的教程,類中的函式怎麼呼叫。Python函式
- URLConnection類,HttpURLConnection類的使用和總結HTTP
- 【QT】 Qt多執行緒的“那些事”QT執行緒
- 匿名內部類的使用
- io流-file類的使用
- Java中的Reference類使用Java
- Arthas 使用的各類方式
- TypeScript介面與類的使用TypeScript
- Qt開發工具使用QT
- QT creator使用筆記QT筆記