Можно переделать статью в паре мест?
Загрузку обычной текстуры можно реализовать парой строкой без выделения памяти и 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 по вкусу.
MarkoPolo
> Можно переделать статью в паре мест?
Эх давно это все было.
Поправил в статье про память.
>Ну и конечно glTexParameteri, iluScale по вкусу.
Это уже навороты. Статья для новичков рассчитана.
alex19921992
Руки кривые.
Executor
А есть аналоги?
KaronatoR
> А есть аналоги?
Если не касаться DDS, то есть... Впрочем я думаю и девил вполне сойдёт, а вот с DDS както дела обстоят у всех либ не очень ИМХО... Мне пришлось писать своё, так как внятного ничего не нашёл...
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!
привет, скажи почему си++ говорит о том что нет файла или директории? Все пути прописанны, Visual Studio C++ 2008 (наверно нэт сборка я хз) код твой правильно скопипастил.
Всем привет!
У меня проблема с этой библиотекой OpenIL:
загружаю файл ilLoadImage(), далее беру данные через ilGetData(), и вывожу через glDrawPixels.
Так у меня картинка рисуется перевернутой и зеркально отраженной.
Почему?
Помогите!!!
Сделай перед взятием инфы iluFlip, iluMirror?
Спасибо!!!
И как я сразу не догадался?
iluFlip исправил ситуацию, а чего токо рисует так криво изначально?
GVG
glDrawPixel отрисовывает с нижнего левого угла вроде... а картинка записана с верхнего левого.
Всем привет!
У меня вопрос: я загружаю файлец ilLoadImage(), затем беру буфер ilCopyPixels(), далее его изменяю и он корректно перерисовывается через glDrawPixels().
Делаю ilSetPixels().
Затем делаю ilSaveImage() с новым именем файла, но при этом сохранятеся исходное изображение, хотя повторюсь, рисуется измененное.
Где засада?
Как выяснилось, решение проблемы GVG - это использование функции ilTexImage вместо ilSetPixels(), я не разбирался почему ilSetPixels() не делает то что нужно, возможно она не для этих целей.
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?
спасибо норм грузит и работает
Тема в архиве.