2015-03-20 7 views
0

вот мой кодзагрузки OGL текстуры с помощью DEVIL

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 :: нагрузки:

vector <Texture> bgtextures; 
bgtextures.resize(1); 
Loader.load(IL_JPG,"bgsnow.jpg",&bgtextures[0]); 

Может кто-нибудь помочь мне

+0

'ilLoad()' может выйти из строя, почему вы не проверяете возвращаемое значение? Ставите, что вы получаете 'IL_COULD_NOT_OPEN_FILE', потому что ваш текущий рабочий каталог не соответствует вашей программе. – genpfault

+0

ilLoad() desn't fail проблема с gluBuild2DMipmaps() – user4695473

ответ

0

Посмотрите на возвращаемое значение этого:

ilLoad(FileType, filename);

делая следующий код:

if (ilLoad(FileType, filename) == IL_FALSE) { 
    //Make it produce an error or something. 
} 

Как предположил genpfault, вы, скорее всего, передаете неправильное имя файла.

+0

if (ilLoad (FileType, filename) == IL_FALSE) { cout << "ОШИБКА ЗДЕСЬ" << endl; выход (1); } 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); cout << "1" << endl; gluBuild2DMipmaps (GL_TEXTURE_2D, texture-> bpp, textur-> width, texture-> height, type, GL_UNSIGNED_BYTE, texture-> Data); cout << "2" << endl; мой новый код такой же ошибка – user4695473

+0

мощность: 1 (не 1 2) – user4695473

+0

помогите мне пожалуйста! – user4695473