我正在使用OpenGL开发一个简单的3D模型加载器,我想添加纹理支持。但是,我不想不必要地重写图像库,我下载了在NeHe纹理映射教程中学到的SOIL(简单OpenGL图像库)。它有一些非常有用的功能,负责多次加载图像并将它们传递给OpenGL。
问题是:在NeHe教程代码中,SOIL函数
SOIL_load_OGL_texture(char *, param,param,param)
完全按照承诺完成,并用正确的图片映射多边形。但是,我创建了一个加载OBJ和MTL文件(3D模型文件)的类。当我尝试使用SOIL函数在此类中加载纹理时,我的程序崩溃了。
答案 0 :(得分:3)
听起来就像你在调用该函数时没有有效的OpenGL上下文一样。
你确定在初始化你的opengl上下文之后只调用了吗? (例如,没有在程序初始化时构造的对象的静态构造)。检查这个问题的一种快速方法是在opengl初始化时设置一个断点,看看你是否点击了BP,或者你的程序是否首先崩溃。
另外,请确保SOIL调用与opengl上下文位于同一个线程上。