HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > Xash3D > Надо прикрутить кнопки btns_main.bmp в меню
Есть добровольцы?
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32259
Нанёс повреждений: 392 ед.

Рейтинг



Надо прикрутить кнопки btns_main.bmp в меню

Описываю задачу вкратце:
Текстура с кнопками сильно большая и поэтому загрузить её втупую и скормить OpenGL не получится. Точнее говоря на современных видимокартах это конечно прокатит, но на старых - бида-бида.
В самом хл эта картинка кормилась 2D-ускорителю, которому пофиг на размер текстур, но в ксаше такое не прокатит, поскольку меню там рисуется в 3д-режиме.
Поэтому картинку такого размера надлежит аккуратно разрезать на множество меленьких текстурок.
Алгоритм таков: пишем прямо в меню загрузчик bmp (в принципе я могу вывести из движка готовый загрузчик картинок, но с собственным будет удобнее). Далее мы режем картинку по вертикали через каждые 80 пикселей (может больше, может меньше, я навскидку). Почему через 80?
Очень просто. Нам не требуется каждую кнопочку сохранять в отдельную текстуру, достаточно сохранить туда три вида одной и той же кнопки: неактивную, мышко-наведенную и нажатую. В дальнейшем мы сможем определить расстояния между кнопками и кормить полученные результаты функции PIC_DrawAdditive через wrect_t. Это достаточно просто. Если некоторым товарищам этот способ покажется недостаточно оптимальным, то они могут замутить атлас текстур, на манер SCRAP_AllocBlock из первокваки. Это будет сделать немного сложнее, но безусловно кол-во текстур значительно уменьшится.
Далее - создаем новый тип кнопки (просто для удобства) на основе QMTYPE_BITMAP. Как сделать, чтобы кнопка реагировала на наведение мышкой можно подглядеть в кнопках Minimize и Quit.
Далее - заменить все текстовые кнопки на на наши новые.
И в заключение - пару слов о том, как загрузить наши порезанные текстуры в OpenGL. Для этого в меню есть хитрая функция
HIMAGE (*pfnPIC_Load)( const char *szPicName, const byte *ucRawImage, long ulRawImageSize );
Которая, как вы видите может принимать картинки прямо из памяти.
Суть такова: выделяем статичный буффер 156х80 пикселей RGB + хидер.
bmp-хидер берем прямо из btns_main делаем его копию и меняем biHeight на 80 или -80, что-то такое. Вниз дописываем кусочек картинки с кнопками, в названии файла пишем что-то, типа #btns_main1.bmp и кормим ксашу. Если всё прошло отлично, то вы сможете увидеть вашу загруженную текстуру при помощи команды r_showtextures 2.
Данная задача безусловно разовъет ваши кодерские способности, к тому же вы окажете вполне реальную помощь проекту не только поиском багов но и вполне реальным делом

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 73415

Старое сообщение 03-03-2011 17:45
-
CrazyRussian
ололо

Дата регистрации: Apr 2009
Проживает: Город-курорт Ессентуки
Сообщений: 790
Возраст: 31

Рейтинг



Награды
 
[1 награда]


Первый пошел!
http://rghost.ru/4628294 - сорцы mainui.dll
сильно не пинайте если не компиляться, хотя должны компилиться.
Все места где побывали мои шаловливые ручонки отмечены комментариями

__________________
Трагическая новость: Пятеро инженеров Casio умерли от смеха, узнав что Samsung анонсировали часы с заявленным временем работы в 25 часов

Сообщить модератору | | IP: Записан
Сообщение: 73465

Старое сообщение 04-03-2011 18:40
- За что?
GuNsHiP
Sneekls!

Дата регистрации: Apr 2009
Проживает: Украина, Мариуполь
Сообщений: 348
Возраст: 32

Рейтинг



А кнопочки работают!

__________________
Gunship Stuff

Сообщить модератору | | IP: Записан
Сообщение: 73489

Старое сообщение 05-03-2011 11:32
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32259
Нанёс повреждений: 392 ед.

Рейтинг



Скоро будут еще более другие кнопки =)

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 73537

Старое сообщение 06-03-2011 10:58
-
SiPlus
GMod Lua Coder
Девойс

Дата регистрации: Jun 2007
Проживает: Санкт-Петербург
Сообщений: 317
Возраст: 27

Рейтинг



А под WinAPI меню не проще переделать? Или вы там HL кроссплатформенным делаете?

Сообщить модератору | | IP: Записан
Сообщение: 75191

Старое сообщение 29-03-2011 17:30
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32259
Нанёс повреждений: 392 ед.

Рейтинг



SiPlus ну ты бы еще года два для верности выждал. Чтоб уж наверняка.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 75193

Старое сообщение 29-03-2011 17:45
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 20:32. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > Xash3D > Надо прикрутить кнопки btns_main.bmp в меню
Есть добровольцы?
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024