因此,我試圖將在Linux機器上編寫和編譯的Qt和OpenGL的C++項目帶到家中的Windows 7機器上,但我遇到了一些困難。首先,我瞭解到一些gl事物(如GL_TEXTURE0)不再被定義,因爲gl.h沒有爲windows定義它們。此外,我有glext.h沒有定義一些函數,如glActiveTexture。我發現的這兩個問題都可以通過引入新的glext.h來解決。Windows/opengl glext.h構建問題
我最直接的問題似乎是我沒有正確引入它。如果我這樣做:
#define GL_GLEXT_LEGACY //should prevent old glext.h from being included
#define GL_GLEXT_PROTOTYPES //should make glActiveTexture be defined
#include <qgl.h>
#include "glext.h" //local up-to-date glext.h
#include <QGLShaderProgram>
然後告訴我,我有未定義的引用glActiveTexture。如果我在glext.h之前包含了QGLShaderProgram,那麼我仍然有這個問題,但是也警告說我正在重新定義在QGLShaderProgram和glext中定義的很多東西,所以我知道後面的文件正在被包含。任何幫助真的會被讚賞。
FYI那樣簡單,它幾乎總是一個壞主意(通常是行不通的),只是從互聯網上下載任意的頭文件來替換你的系統之一頭。由於OpenGL是由圖形驅動程序實現的,因此OpenGL有一些特殊情況,所以在Windows上訪問它的典型方式(無Qt)是在運行時獲取指向函數的指針。像GLEW這樣的擴展庫使得這更容易。 – 2010-12-15 23:27:06