我正在使用 OpenGL 开发一个简单的 3D 模型加载器,我想添加纹理支持。但是,不想不必要地重写图像库,我下载了我在 NeHe 纹理映射教程中学到的 SOIL(简单 OpenGL 图像库)。它有一些非常有用的函数来处理多次加载图像并将它们传递给 OpenGL。
问题是这样的:在NeHe教程代码中,SOIL函数
SOIL_load_OGL_texture(char *, param,param,param)
完全按照承诺,多边形映射到正确的图片。但是,我创建了一个加载 OBJ 和 MTL 文件(3D 模型文件)的类。当我尝试使用 SOIL 函数在此类中加载纹理时,我的程序崩溃了。
- 我正在使用带有 Code::Blocks 的 GNU C++(我也在 Dev-C++ 中尝试过这段代码)
- 我使用 -g -Wall 没有收到来自编译器的错误或警告。
- 我已将所有内容正确链接并包含在我的项目中(如果我复制/粘贴 NeHe 代码,它会正常运行)。
- SOIL 命令在任何类中都不起作用(我尝试创建另一个只执行 SOIL 函数的类,但我遇到了同样的问题)。
- 传递给函数的文件路径都是正确的。我尝试过相对和绝对,所有格式的正斜杠和反斜杠。我将在 NeHe 代码中有效的绝对路径复制并粘贴到我的代码中,但它不起作用。
- 我的其余代码工作正常 - 我可以使用环境/漫反射/等渲染我的形状。颜色和其他设置正确应用。