首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DEVIL加载ogl纹理

使用DEVIL加载ogl纹理
EN

Stack Overflow用户
提问于 2015-03-21 04:00:52
回答 1查看 173关注 0票数 0

以下是我的代码

代码语言:javascript
复制
typedef struct Texture
{
    GLubyte *Data;
    GLuint  bpp;
    GLuint width, height;
    GLuint ID;
}Texture;

class TextureLoader
{
    public:
    TextureLoader()
    {
        ilInit();
        iluInit();
    }
    void load(ILenum FileType, const char *filename, Texture *texture)
    {
        ilLoad(FileType, filename);

        texture->width = ilGetInteger(IL_IMAGE_WIDTH);
        texture->height = ilGetInteger(IL_IMAGE_HEIGHT);
        texture->bpp = ilGetInteger(IL_IMAGE_BYTES_PER_PIXEL);

        texture->Data = ilGetData();
        ilEnable(IL_CONV_PAL);

        unsigned int type = ilGetInteger(IL_IMAGE_FORMAT);
        glGenTextures(1, &texture->ID);
        glBindTexture(GL_TEXTURE_2D,texture->ID);
        gluBuild2DMipmaps(GL_TEXTURE_2D, texture->bpp, texture->width,
            texture->height, type, GL_UNSIGNED_BYTE, texture->Data);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
    }
}Loader;

而且它似乎不起作用。

调用gluBuild2DMipmaps后出现分段故障。

我不明白有什么问题,因为代码大多是从示例中复制粘贴过来的(...这是TextureLoader::load:

代码语言:javascript
复制
vector <Texture> bgtextures;
bgtextures.resize(1);
Loader.load(IL_JPG,"bgsnow.jpg",&bgtextures[0]);

有人能帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2015-03-22 00:17:21

看看下面的返回值:

ilLoad(FileType, filename);

通过执行以下代码:

代码语言:javascript
复制
if (ilLoad(FileType, filename) == IL_FALSE) {
    //Make it produce an error or something.
}

正如genpfault所建议的,您可能传入了不正确的文件名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29174906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档