Пятница, 22 Ноября 2024, 20:24

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Цвет и прозрачность в HGE
RenusДата: Понедельник, 11 Октября 2010, 02:30 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Посмотрев на родную систему частиц HGE я немножко по плевался, нет все красиво выглядит, но в моей игре есть изменение течения времени и подобные выкрутасы, которые толкнули к написанию своей системы частиц...
Написал уже довольно много, все работает и довольно красиво, не могу только с одной вещью разобраться.
Как изменить цвет и прозрачность спрайта, как обратиться к определенному биту DWORDа отвечающему за цвет, можно ли как то обойти переводы с шестнадцатеричной системой?
Понимаю что возможно не корректно сформулировал вопрос, но лучше не получаеться)))
Расскажите кто как работает с цветом спрайтов в HGE плз...
AkyltistДата: Понедельник, 11 Октября 2010, 04:17 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Установка прозрачности и цвета
Code
void SetColor(
   DWORD col,
   int i = -1
);

col
The new color value.
i
Optional index of the vertex to be changed. Vertices are indexed clockwise starting from top-left one in the range 0-3. If =-1 or omitted, all four vertices will be changed.

Собственно вызов прям перед рендером партикла (спрайта)
По всей видимости при отрисовке спрайта, надо указать флаг: Blending modes

Code
#define    BLEND_COLORADD    1
#define    BLEND_COLORMUL    0
#define    BLEND_ALPHABLEND  2
#define    BLEND_ALPHAADD    0
#define    BLEND_ZWRITE      4
#define    BLEND_NOZWRITE    0
RenusДата: Понедельник, 11 Октября 2010, 09:07 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Да это я читал, я имел ввиду побитовую установку значений(в отдельности) каждой из четырех оставляющих.
Еще и работа с шестнадцатеричной системой, не очень быстро получается...
DekaSoftДата: Понедельник, 11 Октября 2010, 09:26 | Сообщение # 4
почетный гость
Сейчас нет на сайте
Quote (Renus)
Да это я читал, я имел ввиду побитовую установку значений(в отдельности) каждой из четырех оставляющих.

Ну так и редактируй DWORD побитово. 0xAARRGGBB. И скорость работы тут заметно не упадет. Или научить как логическими операциями установить/сбросить бит? Чего-то я плохо понял вопрос кажется...


http://dekasoftware.narod.ru
http://www.dekagames.com
RenusДата: Понедельник, 11 Октября 2010, 09:33 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Quote (DekaSoft)
Или научить как логическими операциями установить/сбросить бит? Чего-то я плохо понял вопрос кажется...

Ага happy
Кинь инфу или ссылку, а то я искал с двордом ниче не нашел...
DekaSoftДата: Понедельник, 11 Октября 2010, 09:51 | Сообщение # 6
почетный гость
Сейчас нет на сайте
Для установки определенного бита в любом числе используется логическое поразрядное "ИЛИ" (or в ассемблере или | в С++) .
Для сброса определенного бита - логическое поразрядное "И" (and в ассемблере или & в С++). Вся сложность в том, что в С++ насколько я знаю нельзя задавать непосредственные значения в двоичном виде, поэтому маски придется все равно переводить в хекс. Это снижает читабельность, но не скорость работы.
Примеры:

Code

DWORD col;

col = col | 0x20; // установка 6-го бита
col = col & 0x20; // сброс всех битов кроме 6-го

как-то так. У тебя в подписи ассемблер упоминается, я думал ты будешь в курсе.


http://dekasoftware.narod.ru
http://www.dekagames.com
nilremДата: Понедельник, 11 Октября 2010, 13:16 | Сообщение # 7
Просветленный разум
Сейчас нет на сайте
Вот макрос для установки битов:

Code

#define COLOR(a,r,g,b) ((DWORD)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))

Здесь:
a - прозрачность,
r - красный,
g - зеленый,
b - синий.

Пример установки непрозрачного красного. Значения должны быть в интервале 0-255.

COLOR(255,255,0,0)

Как оно работает, можно прочитать здесь - http://gcup.ru/forum/62-1558-40465-16-1258294333


Windmill 2

WindMill 2D Game Engine
RenusДата: Понедельник, 11 Октября 2010, 16:55 | Сообщение # 8
почетный гость
Сейчас нет на сайте
DekaSoft, nilrem Огромное спасибо!
Почитал, разобрался, все работает)
Если будут вопросы по AVR или другим чипам, обращайтесь, всегда помогу...
Обязательно напишу вам в титрах к игре благодарность tongue
DekaSoftДата: Понедельник, 11 Октября 2010, 22:00 | Сообщение # 9
почетный гость
Сейчас нет на сайте
Quote (Renus)
Если будут вопросы по AVR или другим чипам, обращайтесь, всегда помогу...

вот это уже интересно. Может когда чего и спрошу. smile


http://dekasoftware.narod.ru
http://www.dekagames.com
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг