2013-04-17 198 views
1

我在OpenGL中創建一個3D應用程序,並且爲了在我讀取的模型上顯示紋理,我使用了GLuint。但是,我收到了Visual Studio錯誤C4430缺少的類型,以及其他一些與此問題有關的問題。GLuint未被識別

包含過量文件並且在投入使用之前工作正常。是否GLuint過時了,還是別的?

編輯: 已經改變的代碼是:

對象構造之前

Object::Object(string shapeFileName, string texFileName){ 
    readFile(shapeFileName); 
    loadTexture(texFileName); 
} 

對象構造之後

Object::Object(string shapeFileName, string texFileName){ 
    readFile(shapeFileName); 

    glGenTextures(1, &texture); 
    glBindTexture(GL_TEXTURE_2D, texture); 
    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); 

    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 

    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 

    loadTexture(texFileName); 
    gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 1024, 512, GL_RGB, GL_UNSIGNED_BYTE, image_array); 

    free(image_array); 

    glTexImage2D(GL_TEXTURE_2D, 0, 3, 1024, 512, 0, GL_RGB, GL_UNSIGNED_BYTE, image_array); 
} 

隨着在頭文件添加了行GLuint texture;,這是唯一引發錯誤的位。

+1

請問您能展示一些代碼嗎?最好是前後比較,即一個工作代碼和一個不能編譯的代碼,正如你所說的那樣「在這個代碼被投入之前工作正常」... – leemes

+0

@眼睛:如果有人沒有提供足夠的信息給回答這個問題,請投票結束。 –

+0

這只是這個問題。我剛添加了一個未初始化的變量'GLuint紋理;' – Yann

回答

2

您是否在聲明變量的頭文件中包含OpenGL頭? GLuintgl.h中定義,因此您必須包含該內容。

在所有操作系統除了 MacOS X的它

#include <GL/gl.h> 

在MacOS X是

#include <OpenGL/gl.h> 
+0

是的,頭文件包含在正確的位置 – Yann

+0

@ Yann4:定義「正確的位置」。你引用的編譯錯誤清楚地表明它並不包含在所有重要的地方。 – datenwolf

+0

它在頭文件,頭文件引用的.cpp文件和主文件中定義,所有文件都包含保護 – Yann

0

,我認爲你應該使用GLEW,包括:

#include <GL/glew.h> 

而不是:

#include <GL/gl.h>