2012-05-24 42 views
0

我正在使用OpenGLScene作爲openGL的包裝,我已經開始使用the most simple example of that I've found on the internet。我剛剛從鏈接中複製了所有的郵件。Qt OpenGLScene工作示例

我編譯和運行程序,顯然這樣的警告總是來了(在drawbackground法):

if (painter->paintEngine()->type() 
       != QPaintEngine::OpenGL) { 
      qWarning("OpenGLScene: drawBackground needs a " 
        "QGLWidget to be set as viewport on the " 
        "graphics view"); 
      return; 

有誰知道爲什麼(我在Mac上)?有沒有人有更「穩定」的例子?這個警告是否相關?

基本上,我想知道爲什麼會這樣警告出現,我怎麼能擺脫它......

我真的不知道從哪裏開始。我嘗試了幾個簡單的東西(例如,使QGLWidget當前的上下文),但我不知道足夠的Qt來了解什麼時候以及如何調用drawbackground方法。

回答

0

Qt的OpenGLScene工作示例

"Boxes"演示Qt中4.啓動qtdemo,選擇demonstration->盒。或者全部閱讀online。無論是該文件還是閱讀文檔overpainting,HelloGL或任何其他OpenGL example

我想要使用Qt的OpenGL的「包裝」。使用Qt的圖形用戶界面,和OpenGL作爲可視化

QGLWidget

+0

因此,你所建議的是標準方法應該是使用QGLWidget嗎?因爲我想在其上放置小部件,並且GraphicsScene是我發現最吸引人的地方,正如該示例所示。 –

+0

或者你建議把QGLWidget放在場景中,填充它,而不是在背景上繪圖,我畫QGLWidget?我沒有看到優勢...... –

+1

@J.C.Leitão:「你在暗示什麼」我建議閱讀文檔。標準方法是當你需要OpenGL加速時,從'QGLWidget :: paintGL'中繪製任何你想要的東西。 Qt框架中沒有「OpenGLScene」類。 – SigTerm

0

你有OpenGLOpenGL2

試試這個代碼

if (painter->paintEngine()->type() != QPaintEngine::OpenGL 
    || painter->paintEngine()->type() != QPaintEngine::OpenGL2) 
+0

相同的結果.... –

+0

這將失敗,如果第一個未找到,請使用&& – user1294021

0

你到底想幹什麼?

IIRC qq26示例在4.7中不起作用(4.8中未測試過)。

但overpainting上的OpenGL場景的頂部QWidgets加入4.8(http://qt-project.org/doc/qt-4.8/opengl-overpainting.html),而不是在這個例子黑客

編輯:只要使用Qt的一個OpenGL顯示很簡單,只是從QWidget獲得和實施initializeGL,resizeGL和paintGL。有Qt函數來包裝紋理,VBOs,PBO和所有其他的opengl東西。請參閱發行版中的OpenGL examples

+0

我想要使用Qt的OpenGL的「包裝」。使用Qt作爲GUI,OpenGL作爲可視化。 –

+0

@J.C.Leitão - 請參閱編輯,無法在評論中粘貼鏈接。這個例子是爲了做技巧來嵌入標準的QtDialogs在opengl –

+0

好吧。所以,當我說我需要Qt作爲GUI時,我提到我需要將Widget放在場景中。根據我所理解的,不能將Widgets放在QGLWidget上並以這種方式實現它。這就是爲什麼我不考慮這個例子作爲黑客...我需要現場把小部件... –

0

我做了一個small minimal OpenGL+Qt我認爲可以回答的問題:

我真的不知道從哪裏開始。我嘗試了幾個簡單的東西 (使QGLWidget當前上下文爲例),但我不知道 足夠的Qt來了解何時以及如何調用drawbackground方法 。

我認爲它可以幫助那些在我問這個問題時處於我的位置的人。