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

Библиотека OpenIL. (Комментарии к статье) (7 стр)

Страницы: 1 2 3 4 5 6 7
#90
22:50, 29 дек. 2009

Можно переделать статью в паре мест?

Загрузку обычной текстуры можно реализовать парой строкой без выделения памяти и case, к тому же case будет неправильно обрабатывать картинки в GL_BGR_ext. В общем, там всего то надо:

void Texture(char* filename,int& id){    
    ilLoadImage(filename);

    int err=ilGetError();
    if(err!=IL_NO_ERROR)
      MessageBox(NULL, iluErrorString(err), "Ошибка при загрузке!", MB_OK);

    glEnable(GL_TEXTURE_2D);
    glGenTextures(1,&id);
    glBindTexture(GL_TEXTURE_2D, id);
    gluBuild2DMipmaps(GL_TEXTURE_2D,4,ilGetInteger(IL_IMAGE_WIDTH),ilGetInteger(IL_IMAGE_HEIGHT), ilGetInteger(IL_IMAGE_FORMAT), ilGetInteger(IL_IMAGE_TYPE), ilGetData());
}

Ну и конечно glTexParameteri, iluScale по вкусу.


#91
10:54, 30 дек. 2009

MarkoPolo
> Можно переделать статью в паре мест?
Эх давно это все было.
Поправил в статье про память.
>Ну и конечно glTexParameteri, iluScale по вкусу.
Это уже навороты. Статья для новичков рассчитана.

#92
11:23, 30 дек. 2009

alex19921992
Руки кривые.

Executor
А есть аналоги?

#93
13:12, 30 дек. 2009

KaronatoR
> А есть аналоги?

Если не касаться DDS, то есть... Впрочем я думаю и девил вполне сойдёт, а вот с DDS както дела обстоят у всех либ не очень ИМХО... Мне пришлось писать своё, так как внятного ничего не нашёл...

#94
17:55, 30 дек. 2009

Andrey
Мне больше всего вот это место не нравится:

unsigned int type;
// переопределить тип для OpenGL
switch (bpp) {
case 1:
  type  = GL_RGB8;
  break;
case 3:
  type = GL_RGB;
  break;
case 4:
  type = GL_RGBA;
  break;
}
Это заменяется на ilGetInteger(IL_IMAGE_FORMAT), который нормально работает с BGR!
#95
16:30, 14 янв. 2010

привет, скажи почему си++ говорит о том что нет файла или директории? Все пути прописанны, Visual Studio C++ 2008 (наверно нэт сборка я хз) код твой правильно скопипастил.

#96
16:03, 19 мар. 2010

Всем привет!
У меня проблема с этой библиотекой OpenIL:
загружаю файл ilLoadImage(), далее беру данные через ilGetData(), и вывожу через glDrawPixels.
Так у меня картинка рисуется перевернутой и зеркально отраженной.
Почему?
Помогите!!!

#97
16:07, 19 мар. 2010

Сделай перед взятием инфы iluFlip, iluMirror?

#98
16:23, 19 мар. 2010

Спасибо!!!
И как я сразу не догадался?
iluFlip исправил ситуацию, а чего токо рисует так криво изначально?

#99
16:26, 19 мар. 2010

GVG
glDrawPixel отрисовывает с нижнего левого угла вроде... а картинка записана с верхнего левого.

#100
14:33, 23 мар. 2010

Всем привет!
У меня вопрос: я загружаю файлец ilLoadImage(), затем беру буфер ilCopyPixels(), далее его изменяю и он корректно перерисовывается через glDrawPixels().
Делаю ilSetPixels().
Затем делаю ilSaveImage() с новым именем файла, но при этом сохранятеся исходное изображение, хотя повторюсь, рисуется измененное.
Где засада?

#101
16:24, 23 мар. 2010

Как выяснилось, решение проблемы GVG - это использование функции ilTexImage вместо  ilSetPixels(), я не разбирался почему ilSetPixels() не делает то что нужно, возможно она не для этих целей.

#102
19:13, 23 мар. 2010
ILuint img = ilLoadImage("test.png");
int w = ilGetInteger(IL_IMAGE_WIDTH);
int h = ilGetInteger(IL_IMAGE_HEIGHT);
int bpp = ilGetInteger(IL_IMAGE_BYTES_PER_PIXEL);
int size = w * h * bpp;
unsigned char *data = malloc(size);
memcpy(data, ilGetData(), size);
for(int i = 0; i != h; ++i) {
  for(int j = 0; j != w; ++j) {
    unsigned char *pixel = &data[(i * h + j) * bpp];
    pixel[0] = 255;
    pixel[1] /= 16;
    pixel[2] /= 16;
  }
}
ilSetData(data);
ilSaveImage("test1.png");
Вполне работает.
А в чём может быть проблема - подскажет iluErrorString(ilGetError()), file already exists maybe?
Прошло более 2 лет
#103
14:59, 1 июня 2012

спасибо норм грузит и работает

Страницы: 1 2 3 4 5 6 7
ПрограммированиеФорумГрафика

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