Цвет и прозрачность в 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) Или научить как логическими операциями установить/сбросить бит? Чего-то я плохо понял вопрос кажется... Ага Кинь инфу или ссылку, а то я искал с двордом ниче не нашел...
|
|
| |
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 или другим чипам, обращайтесь, всегда помогу... Обязательно напишу вам в титрах к игре благодарность
|
|
| |
DekaSoft | Дата: Понедельник, 11 Октября 2010, 22:00 | Сообщение # 9 |
почетный гость
Сейчас нет на сайте
| Quote (Renus) Если будут вопросы по AVR или другим чипам, обращайтесь, всегда помогу... вот это уже интересно. Может когда чего и спрошу.
http://dekasoftware.narod.ru http://www.dekagames.com
|
|
| |