2

我正在使用 DevIl 库并尝试使用它将纹理加载到 OpenGL 以应用于精灵。代码直接来自《严肃游戏设计的 C# 游戏编程》一书(如果有帮助的话)。我遇到的问题是 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));
    }
4

1 回答 1

2

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

于 2011-08-15T02:22:44.017 回答