2013-03-01 18 views
1

我目前正在爲遊戲開發課程的最終編程項目,並選擇利用C++和OpenGL的3D渲染方(儘管事實我沒有什麼經驗)。突然的問題與過剩和glew包括和類型說明

我一直在使用它,直到現在絕對沒有嚴重的錯誤,然後離開它幾天。但是當我返回時,我開始用我使用過的幾個GLfloat變量得到各種「C4430 - Missing Type Specifier」錯誤。

這是我以前的定義,直到我重新加載它工作得很好今日:

#include <gl/glew.h> 
    #include <gl/glut.h> 

    ... Other variable and object definitions 

    const GLfloat DEFAULT_X = -5.0f; //C4430: missing type specifyer on all 3 lines and 
    const Glfloat DEFAULT_Y = -4.0f; //C2146: syntax error : missing ';' before identifier 'DEFAULT_Y' on this line only 
    const GLfloat DEFAULT_Z = -20.0f; 

    GLfloat viewX = DEFAULT_X; //This line is fine 
    GLfloat viewY = DEFALUT_Y; //Resulting C2065: Undeclared identifyer 
    GLfloat viewZ = DEFALUT_Z; //on both these lines 

在試圖解決這個問題,我開始改變#包括(或許,一個愚蠢的做法,但我是在很困惑這一點),並發現像某些人所建議的那樣添加Windows.h和gl/GL.h可以解決除了其中一個問題之外的所有問題。

#include <Windows.h> 
    #include <gl/GL.h> 
    #include <gl/glew.h> 
    #include <gl/glut.h> 

新的問題是,試圖使用GL/GL.h前GL/glew.h引發錯誤 「C1189:glew.h之前包括gl.h」,因爲在猜測,GLEW包括GL .h本身。但是任何修改都會導致以前的類型說明錯誤。

什麼讓我感到困惑的是,如果glew包含GL.h,那麼這些類型說明符是否也包含在內?我將繼續編寫我沒有測試的方法,但需要能夠測試我很快做了什麼。任何人都可以提供幫助或建議?

回答

2
#include <Windows.h> 
#include <gl/GL.h> 
#include <gl/glut.h> 
#include <gl/glew.h> 

這是錯誤的順序,包括在這些頭。

GLEW(或任何OpenGL的裝載機您正在使用)總是是第一位的。你從來沒有包括gl.h與OpenGL加載器頭;你只需要包括它們(在這種情況下爲glew.h)。它位於OpenGL或OpenGL工具的所有其他頭文件之前。

FreeGLUT的標題接下來。在那之後...你根本不應該包括window.h,除非你正在做一些特定於Windows的代碼。如果你是,你可以在FreeGLUT的東西后加入它。

+0

我很害怕像現在面對自己這麼刻苦,因爲有更多的理由,所以你想。 首先,您所申請的訂單是我將它們轉化爲的原始訂單,我在撰寫問題時不恰當地複製了訂單(已對此進行了修改)。 更糟糕的是,原始錯誤是在某些情況下由於簡單的GLfloat拼寫錯誤而導致的結果,並且在變量使用中也是如此。我無法相信我真的那麼做 - .- 謝謝你的回覆沒有任何問題。 – 2013-03-01 21:32:08