ПрограммированиеФорумГрафика

OpenIL file load problem

#0
6:32, 8 июня 2009

Скачал последнюю версию библиотеки OpenIL (DevIL) , установил подобающим образом , написал небольшую программку-тест ... и на этом месте вся радость от  предчувствия грядущих свершений ушла . При загрузке файла с текстурой в стек ошибок пишется 1290 , она же "файл не может быть загружен" . Подкладывал разные файлы (соответствующего формата) , менял путь на абсолютный , танцевал шаманские танцы ... результат - 1290 . Подскажите молодому , в каком месте руки кривые ? Будем ровнять утюгом .

Собственно , вот он код (точнее обсуждаемые нами части):

CTexture::CTexture()
{
  ilInit();
  iluInit();
}
 
CTexture::~CTexture()
{
}

void CTexture::LoadTexture(ILenum FileType, wchar_t *filename, TextureImage *texture)
{

  ilLoad(FileType, (const ILstring)filename);

  int err=ilGetError();
  if(err!=IL_NO_ERROR)
  {
    const wchar_t* strError = iluErrorString(err);
    MessageBox(NULL, strError, L"Ошибка при загрузке!", MB_OK);
    exit(1);
  }
        ............. 
 }

И вызов :

void setupRC()
{
  glClearColor(0.0f,0.0f,0.0f,1.0f);

  Texture = new CTexture();
  Texture->LoadTexture(IL_JPG, L"image.jpg" ,&textures[0]);

}
#1
8:52, 8 июня 2009

Dreamer, У тебя точно файл лежит в том месте откуда ты его грузишь? Что такое textures[0]?

#2
9:11, 8 июня 2009

2 KKH : Да , сомнений быть не может. В этом листинге указана текущая папка (то бишь папка с проектом) , но , как я уже говорил , менял на абсолютный путь . Вплоть до простого "C:\\image.jpg" .
&textures[0] это всего лишь ссылка на элемент массива структур , которая призвана хранить информацию о картинке . Эта структура заполняется как раз , где я многоточие поставил . Она вообще никакого , по сути , отношения к ошибке не имеет , т.к. exit(1) срабатывает еще до какого-либо ее использования .

#3
9:22, 8 июня 2009

Dreamer
посмотри тут

#4
10:30, 8 июня 2009

minuz , доработал в соответствии с уроком (спасибо за ссылочку) ... Жаль , безрезультатно . Все то же 1290 .

#5
11:15, 8 июня 2009

Проблема скорее всего в том что у тебя имя файла задано в широких символах wchar. Тебе надо передавать имя файла (или преобразовывать его перерд передачей) в ilLoad как ASCII char * и всё будет работать.
Сам када-то долго прыгал вокруг этой грабли пока не догадался попробовать передать имя файла как char*

#6
11:33, 8 июня 2009

Оу ! Преогромнейшие спасибо . А я уже думал мыло и веревку искать )
Честно сказать , меня такая идея тоже посещала , но поглядев на прототип функции ilLoad (воторой параметр как раз wchar_t*) отбросил эту мысль . А , как оказалось , очень даже зря . Приведение к ILstring все решает .
Все заработало . Еще раз спасибо всем .

#7
16:50, 8 июня 2009

char* (ASCII) - зло, DevIL - зло, сверхглючная либа видимо от самого лукавого чтобы пытать бедных программеров. Но приходится есть этот кактус, эх.

#8
16:53, 8 июня 2009

UNICODE - зло. Holywar?

#9
16:55, 8 июня 2009

X512
почему зло?

просто в настройках проекта, надо поставить unicode или ascii, а еще лучше людям хидеры научиться читать там всё написанно.

ПрограммированиеФорумГрафика

Тема в архиве.