簡體   English   中英

從QGLWidget移至QWindow

[英]Moving from QGLWidget to QWindow

我有一些使用Qt 4的代碼。我想將其遷移到Qt 5並切換到QOpenGL。 我不明白來自void paintGL()void initializeGL()需要放在QWindow中的何處。 有人可以幫我舉個例子嗎?

我創建了一個在OpenGL中使用QWindow的簡單示例。

為了簡化OpenGL開發,我創建了一個抽象類GLWindow,該類包含虛擬函數initializeGL()paintGL()resizeGL(int w, int h) 我相信源代碼顯示了舊樣式和新樣式之間的關系。

此處提供示例:

https://github.com/mortennobel/QtOpenGLChapter/tree/master/OpenGL3xAlt

Qt 至少有一個示例(覆蓋) ,將小部件放在OpenGL場景上。 通過觀察,看來最簡單的方法是從QGLWidget繼承而不是QWidget並重寫適當的虛函數以進行初始化和繪制。

用於使用QWindow用OpenGL標准的例子是hellowindow在qtbase /示例/ OpenGL的。

沒有直接替換initializeGL和paintGL。 相反,您可以執行以下操作:

  • 具有表面類型為OpenGLSurface的QWindow。
  • 創建具有匹配格式的QOpenGLContext。
  • 當窗口收到暴露事件時,開始渲染(makeCurrent,您的GL調用,最后是swapBuffers)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM