GLuint未被识别

8

我正在使用OpenGL创建一个3D应用程序,为了在读取的模型上显示纹理,我正在使用GLuint。然而,我遇到了visual studio错误C4430缺少类型以及其他一些相关问题。

glut文件已经被包含并且在这之前一直工作正常。是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;这一行,这是唯一引发错误的部分。


2
你能展示一些代码吗?最好是一个前后对比,即一个可以工作的代码和一个无法编译的代码,就像你所说的“在这个东西加入之前它运行得很好”... - leemes
@leemes:如果有人没有提供足够的信息来回答问题,请投票关闭。 - Nicol Bolas
这只是一个问题。我刚刚添加了一个未初始化的变量 GLuint texture; - Yann
我们需要更多的上下文信息。 - leemes
3个回答

8

您在声明变量的头文件中是否包含了OpenGL头文件?GLuintgl.h中定义,所以您必须包含它。

除了MacOS X操作系统外,所有操作系统都是这样的。

#include <GL/gl.h>

在MacOS X上,它是这样的。
#include <OpenGL/gl.h>

@Yann4:请定义“正确的位置”。你引用的编译错误明显表明它在所有重要的位置都没有被包含。 - datenwolf
它在头文件中定义,该头文件引用的.cpp文件以及主文件中都有包含保护。 - Yann

4

我认为您应该使用glew并包含以下内容:

#include <GL/glew.h>

而不是:

#include <GL/gl.h>

-1

对于iOS,您需要将OpenGLES.framework链接到您的目标,并在代码中导入头文件:

#import <OpenGLES/gltypes.h>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接