1
我試圖從GLee轉移到glew,因爲GLee在VC2010下無法工作,並且在一段時間內沒有更新。我在頭文件中遇到了問題,因爲這兩個庫都希望首先定義它們的頭文件。 glew不喜歡首先定義gl.h(在QtOpenGL中定義),QtOpenGL特別聲明glew應該在QtOpenGL之後定義。Qt4和GLew似乎互不兼容
搜索顯示許多使用glew和Qt的人很好。至少,我想要一個關於兼容性的明確答案。我已經將.h和.c文件添加到我的項目中,因爲將來我不必擔心安裝.lib和.dll文件。
下面是QtOpenGL的代碼,如果GLEW被首次列入被調用:
#ifdef __GLEW_H__
#warning qglfunctions.h is not compatible with GLEW, GLEW defines will be undefined
#warning To use GLEW with Qt, do not include <QtOpenGL> or <QGLFunctions> after glew.h
#endif
這裏就是所謂的代碼,如果QtOpenGL首先包括:
#if defined(__gl_h_) || defined(__GL_H__) || defined(__X_GL_H)
#error gl.h included before glew.h
#endif
我想使用未在QtOpenGL中定義的着色器程序和緩衝區對象(但需要創建OGL渲染窗口)。如果沒有GLEW,我會在Microsoft的頭文件中使用古老版本的OpenGL。 – usm 2012-02-12 19:07:42
@usm:我解釋瞭如何做到這一點:停止包含qtfunctions。首先包含GLEW,然後只包含創建QGLWidget實例所需的最少量東西。哦,沒有人強迫你使用Qt;如果你不喜歡它,還有許多其他跨平臺的方法來創建OpenGL窗口。 – 2012-02-12 19:53:36
我的歉意。在我的沮喪之中,我錯誤地解釋了你的答案意味着qtfunctions也被用於訪問指向新的GL函數的指針,就像GLEW一樣。另外,我不知道QtOpenGL實際上是其他幾個頭文件的組合,所以你的建議已經過去了。我休息了一會兒,清醒的頭腦又有了另一個。在vc2010的Qt預編譯版本中遺漏了Qt dll的問題,但是通過一些工作(手動編譯Qt),我終於得到了它的工作。感謝你的幫助! – usm 2012-02-12 22:00:45