【发布时间】:2012-08-29 13:47:26
【问题描述】:
我正在使用 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 代码中有效的绝对路径复制并粘贴到我的代码中,但它不起作用。
- 我的其余代码工作正常 - 我可以使用环境/漫反射/等渲染我的形状。正确应用颜色和其他设置。
【问题讨论】:
-
我的程序崩溃了。 在 SOiL 调用中?我对此表示高度怀疑。它在哪里崩溃?来自操作系统的任何消息?你试过调试你的程序吗?
-
对 SOIL 的调用是否导致任何 OpenGL 错误?
-
@BartekBanachewicz 它在 SOIL 通话中。该程序在没有它的情况下运行并与它一起崩溃。评论它使一切正常。当它有一个无效的路径时它也可以工作,现在我明白了,因为它没有得到任何 GL 的东西。
标签: opengl textures texture-mapping soil