PMG

Форумы по созданию игр
Текущее время: 19 апр 2024 23:37

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: 16 авг 2007 21:02 
Не в сети
Любитель

Зарегистрирован: 12 авг 2007 13:19
Сообщения: 20
Assassin писал(а):
А вот тут вы неправы!Посчитаем?
RGBA: R = 8/G = 8/B = 8/A = 8
RGB: R = 8/G = 8/B = 8 + Alpha Image 1 Bit
Гыы... считайте 8)


Я так понял, имелась ввиду загрузка черно-белого изображения как маски прозрначности.

На 1 пиксел RGBA: R=8; G=8; B=8; A=8 = 32;
Всего 32 бита, и у нас есть альфа-канал. Ресурсы тратятся на загрузку ОДНОГО изображения.

На 1 пиксел RGB: R=8; G=8; B=8; = 24
ПЛЮС на 1 пиксел черно-белой текстуры 8 бит черного и 8 бит белого. Итого 24+16 = 40 (больше на на 8!!)
ПЛЮС затраты на загрузку второго изображения. Вот и считайте ;Р


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 авг 2007 22:48 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 29 апр 2006 21:28
Сообщения: 404
Зачем это 8 на чёрное и 8 на белое?! Мохнато живёш что бы на это стока выделять...

_________________
С уважением,Блинов Андрей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 авг 2007 23:13 
Не в сети
Любитель

Зарегистрирован: 12 авг 2007 13:19
Сообщения: 20
Assassin писал(а):
Зачем это 8 на чёрное и 8 на белое?! Мохнато живёш что бы на это стока выделять...


А если мне нужна не полная прозрачность? Только черным и белым не обойтись, нужны оттенки серого


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 авг 2007 10:22 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Оттенки серого - 8 бит и все и проще редактрировать и просматривать. Можно эти маски прозрачности накладывать и на другие картинки.

Но в принципе это вопрос вкуса, как хранить прозрачность.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 авг 2007 12:20 
Не в сети
Любитель

Зарегистрирован: 12 авг 2007 13:19
Сообщения: 20
MagicWolf писал(а):
Оттенки серого - 8 бит и все и проще редактрировать и просматривать. Можно эти маски прозрачности накладывать и на другие картинки.

Но в принципе это вопрос вкуса, как хранить прозрачность.


Ладно, тогда то на то и выходит, но в одном случае грузится одна картинка, в другой - две =)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 авг 2007 08:45 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Битов-то одинаково грузиться.

Хотя конечно все будет зависеть от того как это использовать ...

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 авг 2007 11:34 
Не в сети
Любитель

Зарегистрирован: 12 авг 2007 13:19
Сообщения: 20
MagicWolf писал(а):
Битов-то одинаково грузиться.


Но затрат на сам процесс загрузки - вдвое больше


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 авг 2007 16:19 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
По количеству байтов будет одинаково, ведь не важно, где лежат байты, и в том и другом случае считается одно и тоже количество.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 авг 2007 22:12 
Не в сети
Любитель

Зарегистрирован: 12 авг 2007 13:19
Сообщения: 20
MagicWolf писал(а):
По количеству байтов будет одинаково, ведь не важно, где лежат байты, и в том и другом случае считается одно и тоже количество.



Я имею в виду затраты на операции типа "открыть файл", "прочитать файл", "разжать текстуру", "разобрать на цвета", "закрыть файл"...
Если изображений много (а в большой игре их много), время загрузки заметно увеличится...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 22 авг 2007 08:32 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Может и уменьшиться. Предположим, у нас 1000 картинок и все с прозрачностью, но маски прозрачности у всех одинаковые, в этом случае скорость увеличится.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 22 авг 2007 16:30 
Не в сети
Любитель

Зарегистрирован: 12 авг 2007 13:19
Сообщения: 20
MagicWolf писал(а):
Может и уменьшиться. Предположим, у нас 1000 картинок и все с прозрачностью, но маски прозрачности у всех одинаковые, в этом случае скорость увеличится.


Ну, в этом частном случае - да ) Но врядли наберётся в какой-нибуть игре ОЧЕНЬ много текстур, которым требуется одинаковая маска... Хотя, в общем, согласен - зависит от задач =)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 ноя 2007 15:31 
Не в сети
Любитель

Зарегистрирован: 12 янв 2006 11:05
Сообщения: 21
Вот возникла проблема с кодом, который выложил Assassin.
В коде используется фильтрация текстур GL_NEAREST:
Цитата:
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_NEAREST);

но это сильно портит качество текстуры. Когда я ставлю GL_LINEAR, то в текстуре появляются розовые края (у меня прозрачный цвет (255, 0, 255) ).
Помогите пожалуйста, как можно убрать их?

ЗЫ: Края проявляются только если текстура растягивается, если остается оригинального размера, то все нормально.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 ноя 2007 09:45 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Ты не читал Урок 7. Режимы фильтрации текстур, освещение и обработка клавиатуры?

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 ноя 2007 13:49 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Так-то вообще-то не должно быть проблем. Используешь GL_LINEAR и все. Чтобы точно понять что происходит нужен проект (лучше метнуть на файлобменник).

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 ноя 2007 20:22 
Не в сети
Любитель

Зарегистрирован: 12 янв 2006 11:05
Сообщения: 21
Так. Урок я прочитал, но ничего нового там не нашел. Проект я немогу выложить по ряду причин. Могу лишь привести подробней проблему:
1. Загружаю текстуру 32x32, прозрачные участки в ней (0xFF, 0x00, 0xFF), текстура 24 бита на пиксель.
2. Преобразую текстуру в 32 битный формат (добавляю альфу), и сразу где пиксель (0xFF, 0x00, 0xFF) ставлю альфу в 0x00(полностью прозрачна).
3. Cоздаю мипмап текстуру (gluBuild2DMipmaps).
4. Ставлю в ней параметры:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);

---------------------------------------------------------
5. Рисую текстуру

Вот отрывки из кода:
Код:
unsigned char *ret = new unsigned char[32*32*4];
for(int p = 0; p != 32*32; p++)
{
   ret[p*4] = uncompressedData[p*3+2];
   ret[p*4+1] = uncompressedData[p*3+1];
   ret[p*4+2] = uncompressedData[p*3];
   if(ret[p*4]==0xFF && ret[p*4+1]==0x00 && ret[p*4+2]==0xFF)
   {
           ret[p*4+3]= 0x00;
   }
   else
   {
           ret[p*4+3] = 0xFF;
   }
}

Код:
glGenTextures(1, &newTexture.texture);
glBindTexture(GL_TEXTURE_2D, newTexture.texture);
gluBuild2DMipmaps(GL_TEXTURE_2D,GL_RGBA,32,32,GL_RGBA,GL_UNSIGNED_BYTE,pixels);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);

Код:
glBindTexture(GL_TEXTURE_2D, TexManager->GetTexture(texnum, 0,0,0,0,false));
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 1.0f); glVertex2f((nx-cx-itype->xOffset/32)*wi/15.0f,          he-(ny-cy-itype->yOffset/32+1)*he/11.0f);
glTexCoord2f(1.0f, 1.0f); glVertex2f((nx-cx+1-itype->xOffset/32)*wi/15.0f,        he-(ny-cy-itype->yOffset/32+1)*he/11.0f);
glTexCoord2f(1.0f, 0.0f); glVertex2f((nx-cx+1-itype->xOffset/32)*wi/15.0f,        he-(ny-cy-1-itype->yOffset/32+1)*he/11.0f);
glTexCoord2f(0.0f, 0.0f); glVertex2f((nx-cx-itype->xOffset/32)*wi/15.0f,          he-(ny-cy-1-itype->yOffset/32+1)*he/11.0f);
glEnd();


Розовые края проявляются на границе непрозрачной и прозрачной области текстуры.
Могу если что кинуть спрайт и скриншот того как он отображается на экране.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 39


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB