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;头文件中添加的行之外,这是唯一引发错误的位。

4

3 回答 3

6

Did you include the OpenGL header in the header you're declaring the variable in? GLuint is defined in gl.h so you must include that.

On all operating systems except MacOS X it's

#include <GL/gl.h>

on MacOS X it is

#include <OpenGL/gl.h>
于 2013-04-17T12:42:23.493 回答
4

我认为您应该使用 glew 并包括:

#include <GL/glew.h>

而不是:

#include <GL/gl.h>
于 2016-04-15T15:19:18.040 回答
-1

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

#import <OpenGLES/gltypes.h>
于 2020-02-17T16:28:50.903 回答