使用DevIl库加载纹理的问题

时间:2011-08-14 23:50:48

标签: opengl textures devil

我正在使用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));
    }

1 个答案:

答案 0 :(得分:2)

DevIL是相当荒谬的,基于OpenGL的API和一般结构。因此,报告错误的典型方式是使用ilGetError。如果你想确保一个函数成功与否,你应该使用它。