我正在尝试使用 Devil 将纹理加载到 OpenGL 中,并且在调用此构造函数时出现分段错误
Sprite::Sprite(const char *path){
ILuint tex = 0;
ilutEnable(ILUT_OPENGL_CONV);
ilGenImages(1, &tex);
ilBindImage(tex);
ilLoadImage(path);
ilConvertImage(IL_RGBA, IL_UNSIGNED_BYTE);
width = (GLuint*)ilGetInteger(IL_IMAGE_WIDTH);
height = (GLuint*)ilGetInteger(IL_IMAGE_HEIGHT);
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D,
0,
GL_RGBA,
width,
height,
0,
GL_RGBA,
GL_UNSIGNED_BYTE,
&tex);
ilBindImage(0);
ilDeleteImages(1, &tex);
ilutDisable(ILUT_OPENGL_CONV);
}
并且纹理是受保护的成员
GLuint texture;
一旦调用此构造函数,我就会收到一个段错误并退出,我正在使用 freeglut、gl、il、ilu 和 ilut。任何帮助,将不胜感激
编辑:
我还决定采取不同的方法并使用
texture = ilutGLLoadImage(path)
函数将其直接加载到 gl 纹理中,因为我找到了来自的段错误
ilLoadImage(path)
但是编译器告诉我 ilutGLLoadImage() 没有在这个范围内声明,我有 IL/il.h IL/ilu.h 和 IL/ilut.h 都包含并初始化