Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка изображения не кратного 2ки 
:(
    Опции темы
Nemesis
Дата 23.3.2005, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 20.2.2005
Где: Москва

Репутация: нет
Всего: 5



Нужна помощь в загрузке изображений с размерами не кратными степени 2. Читал документацию на официальном сайте OpenGL, но там лишь сказано,что есть такая возможность загружать Non-Power-Of-Two Textures, но вот ничего практического по этому поводу не сказано... Какая функция этим занимается... как юзать... Помогите, пожалуйста. Спасибо!
--------------------
PM MAIL   Вверх
chipset
Дата 23.3.2005, 02:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: нет
Всего: 165



gluBuild2dMipmaps


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Nemesis
Дата 23.3.2005, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 20.2.2005
Где: Москва

Репутация: нет
Всего: 5



gluBuild2dMipmaps

Да, ее я пробовал, но она почему-то ужасно портит картину.

--------------------
PM MAIL   Вверх
chipset
Дата 24.3.2005, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: нет
Всего: 165



Nemesis, покажи код, плз. У меня вроде всё нормально было..


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Nemesis
Дата 26.3.2005, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 20.2.2005
Где: Москва

Репутация: нет
Всего: 5



Затрудняюсь его показать, ибо это огромная программа с кучей заголовочных. Дело в том, что gluBuild2dMipmaps все равно доводит до ближайшего размера степени 2ки. Изображение в 640 х 480 доводится этой функцией до 512 х 512.
В результате чего теряются ценные пиксели.
--------------------
PM MAIL   Вверх
chipset
Дата 28.3.2005, 05:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: нет
Всего: 165



Цитата(Nemesis @ 26.3.2005, 04:25)
Затрудняюсь его показать, ибо это огромная программа с кучей заголовочных.

Покажи как ты вызываешь gluBuild2dMipmaps ;)

Это сообщение отредактировал(а) chipset - 28.3.2005, 05:30


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Nemesis
Дата 29.3.2005, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 20.2.2005
Где: Москва

Репутация: нет
Всего: 5



Вот, пожалуйста:

int IMAGE_gl::set_astexture (uint texn,int level)
{
glBindTexture(GL_TEXTURE_2D,texn);
// способ интерполяции в случае,
// когда рисунок меньше исходного размера
glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_MIN_FILTER,GL_LINEAR);
// способ интерполяции в случае,
// когда рисунок большего размера
glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_MAG_FILTER,GL_LINEAR);
// повторение текстуры в направлении s
glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_WRAP_S,GL_REPEAT);
// повторение текстуры в направлении t
glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_WRAP_T,GL_REPEAT);
// выбираем только цвет текстуры
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,
(float)GL_REPLACE);


// устанавливаем изображение как текстуру
gluBuild2DMipmaps(GL_TEXTURE_2D,h->get_bpp()/8,
h->get_w(),h->get_h(),h->get_pf(),h->get_pt(),data);


#ifdef GL_EXT_paletted_texture // если есть поддержка палитровых текстур
#ifdef GL_GLEXT_PROTOTYPES // если функции определены в библиотеке импорта определите этот дефайн
if(h->get_bpp()==8) // если текстура с палитрой
glColorTableEXT(GL_TEXTURE_2D,h->get_cbpp()/8,h->get_clen(),h->get_cf(),
h->get_ct(),pal); // устанавливаем палитру
#endif

#endif
return 1;
}



А что ее можно вызвать как-то по-другому?smile

--------------------
PM MAIL   Вверх
p0s0l
Дата 29.3.2005, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 2
Всего: 112



Цитата(Nemesis @ 23.3.2005, 00:58)
Читал документацию на официальном сайте OpenGL, но там лишь сказано,что есть такая возможность загружать Non-Power-Of-Two Textures,
Текстуры "неправильных" размеров можно грузить, если видяха поддерживает расширение ARB_texture_non_power_of_two... Это расширение входит в стандарт OpenGL 2.0...
В общем, надо глянуть это:
http://oss.sgi.com/projects/ogl-sample/reg...ower_of_two.txt
Не знаю, как будет работать gluBuild2DMipmaps, если видяха поддерживает эту фичу, но возможно эта функция всё равно будет приводить к размеру степени двойки, поэтому в таком случае надо будет юзать glTexImage2D...

Проще, имхо, перемасштабировать вручную к большему размеру, к 1024x512...


--------------------
С уважением, г-н Посол.
PM   Вверх
DENNN
Дата 30.3.2005, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 2
Всего: 43



Я в ссвое время пришел к выводу, что для универсальности решения (т.е. для карт без ARB_texture_non_power_of_two... и пр. условий) нужно "дополнить" в памяти текстуру до степени двойки но сделать это "дополнение" прозрачным.
Решение кривое, но как вариант имеет место быть.
PM ICQ   Вверх
Nemesis
Дата 30.3.2005, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 20.2.2005
Где: Москва

Репутация: нет
Всего: 5



Опа, DENNN, а ведь это реально решениеsmile)) Можно же текстуру накладывать не целиком, а лишь нужную часть от текстурки, немного геморно, но все же.Очень дельный совет, спасибо!:)

p0s0l, знать бы как ими пользоваться, я как-то с расширениями не работал.А ты случайно не знаешь как ее юзать, мне бы в деталях...
--------------------
PM MAIL   Вверх
Nemesis
Дата 30.3.2005, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 20.2.2005
Где: Москва

Репутация: нет
Всего: 5



DENNN, мда, попробовал искусственно до 1024х512 сделать. Но вот картинка очень сильно портится. Оччень, не знаю чего так... эх, а жаль, идея была клевая
--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.1744 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.