我正在使用DevIl库并尝试使用它将纹理加载到OpenGL以应用于精灵。代码直接出自C#Game Programming for Serious Game Design一书(如果有帮助的话)。我遇到的问题是Il.ilLoadImage调用。即使我传递null,它也不会抛出图像未找到错误,并且当弹出窗体时,精灵只会显示深灰色(而不是白色)。
public void LoadTexture(string textureId, string path)
{
int devilId = 0;
Il.ilGenImages(1, out devilId);
Il.ilBindImage(devilId);
if (!Il.ilLoadImage(path))
{
System.Diagnostics.Debug.Assert(false, "Could not open file [" + path + "].");
}
//Flip the files before passing them to OpenGl
Ilu.iluFlipImage();
int width = Il.ilGetInteger(Il.IL_IMAGE_WIDTH);
int height = Il.ilGetInteger(Il.IL_IMAGE_HEIGHT);
int openGLId = Ilut.ilutGLBindTexImage();
System.Diagnostics.Debug.Assert(openGLId != 0);
Il.ilDeleteImages(1, ref devilId);
_textureDatabase.Add(textureId, new Texture(openGLId, width, height));
}
答案 0 :(得分:2)
DevIL是相当荒谬的,基于OpenGL的API和一般结构。因此,报告错误的典型方式是使用ilGetError
。如果你想确保一个函数成功与否,你应该使用它。