![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Asphyre, PowerDraw: effectDiffuse не работает с RotateEffect [Delphi, Windows]
Malefic © (2004-10-23 12:15:00)так работает нормально, изображение выводиться
нормальным Color:=$FFFFFFFF;
или затемненным.Color:=$FF444444;
RenderEffectCol(Images1[3], cx, cy, Color, 0, effectSrcAlpha + effectAdd + effectDiffuse);
Почему здесь не работает? Картинку вообще не выводит. Хотя переменная одна и та же.
RotateEffect(Images1[2],px,py,Angle,255,Color,0,effectSrcAlpha + effectDiffuse);
Подскажите еще как сделать плавное затемнение, ведь переменная Color - это cardinal и ее нельзя просто dec(Color);
Malefic (2004-10-25 06:54:00) [1]Thanks
dRake (2004-10-24 23:36:00) [2]Ну лажа-не лажа это еще вопрос спорный....
Меня лично смущает необходимость DX9.0b под Asphyre равно как и под PD3. Да и в них есть полезные новые фишки (линии там всякие модные итд). В 2.41 наблюдаются глюки с антияльясингом, которые однако лечатся шаманскими способами :)
А насчет проверки столкновений - куча инфы в инете есть на эту тему.
Malefic (2004-10-24 12:22:00) [3]Большое спасибо, очень помог. Не не забыл.на asphyre effectScrAlpha + effectDiffuse = effectSrcAlpha or effectDiffuseAlpha. Ну попробую разобраться. А насчет 2.41 я знаю, что движка и нет, вот испрашиваю, как можно сделать. Видишь Asphyre и PD 3 они по сравнению с 2.41 лажа, но у них есть pbjectengine. Я бы работал на 2.41 если б знал, как там столкновения проверять.
dRake (2004-10-24 11:39:00) [4]>А почему это не работает с Rotateeffect
Ты случаем не забываешь effectSrcAlpha or effectDiffuseAlpha?
В PD углы от 0 до 255 градусов.
Соответственно чтоб перевести угол из 360 в 255
NewAngle := Round((Angle/360)*255);
Допустим угол поворота картинки ты хранишь в 360 градусах, тогда
X := X + Speed*Cos(Angle*Pi/180);
Y := Y - Speed*Sin(Angle*Pi/180);
>как на версии 2.41 создать спрайт-объект, чтобы он мог >перемещаться(ну это я сам) и проверять столкновения(????)
В 2.41 нет никаких встроенных движков
Malefic (2004-10-24 10:34:00) [5]Я установил asphyre, так как на PD 2.41 нет objectengine. Извиняюсь за большое число вопросов, но как на версии 2.41 создать спрайт-объект, чтобы он мог перемещаться(ну это я сам) и проверять столкновения(????) - вот из-за чего я Asphyre поставил.
Malefic (2004-10-24 10:31:00) [6]2 dRake: Да спасибо, пригодилось. А почему это не работает с Rotateeffect. Я кстати щас на asphyre, поэтому и спрашиваю, тут не совсем так, как на PD. А еще вопрос, вот у меня есть угол поворота картинки, а как сделать так, чтобы картинка(персонаж) двигалась прямо, учитывая угол направления, т.е. ну если угол 0, то он идет вверх, если например 40, то идет вверх-вправо. На DelphiX было так
X := X + sin256(Angle) * (Speed/1000);
Y := Y - cos256(Angle) * (Speed/1000);
Но в Asphyre нет функции sin и cos 256, а если просто sin cos, то спрайт коряво перемещается.
dRake (2004-10-23 18:34:00) [7]И вообще если какие вопросы по PowerDraw - спрашивай :)
Классная штука. Версия 2.41 - рулит полюбому :)
dRake (2004-10-23 18:28:00) [8]Так и не будет работать
Надо RenderEffectCol(Image, X, Y, Ang, Color, 0, effectSrcAlphaAdd);
Учти что если спрайт выводится с эффектом Add или Mul (effectAdd, effectSrcAlphaAdd, effectMul) то прозрачность (яркость) надо менять через
RGB состявляющие цвета, альфа составляющая не влияет.
$FF000000 - прозрачный
$FFFFFFFF - непрозрачный
$FF888888 - полупрозрачный
Если спрайт выводится только с учетом альфа-канала (effectSrcAlpha) то менять надо альфа-составляющую
$00FFFFFF - прозрачный
$FFFFFFFF - непрозрачный
$88FFFFFF - полупрозрачный
И вообще, чтобы не гемороиться на тебе функцию
FUNCTION PackRGBA( R, G, B, A : byte ) : integer;
BEGIN;
Result := (R and $FF) + ((G and $FF) shl 8) + ((B and $FF) shl 16) + ((A and $FF) shl 24);
END;
dRake (2004-10-23 18:28:00) [9]Так и не будет работать
Надо RenderEffectCol(Image, X, Y, Ang, Color, 0, effectSrcAlphaAdd);
Учти что если спрайт выводится с эффектом Add или Mul (effectAdd, effectSrcAlphaAdd, effectMul) то прозрачность (яркость) надо менять через
RGB состявляющие цвета, альфа составляющая не влияет.
$FF000000 - прозрачный
$FFFFFFFF - непрозрачный
$FF888888 - полупрозрачный
Если спрайт выводится только с учетом альфа-канала (effectSrcAlpha) то менять надо альфа-составляющую
$00FFFFFF - прозрачный
$FFFFFFFF - непрозрачный
$88FFFFFF - полупрозрачный
И вообще, чтобы не гемороиться на тебе функцию
FUNCTION PackRGBA( R, G, B, A : byte ) : integer;
BEGIN;
Result := (R and $FF) + ((G and $FF) shl 8) + ((B and $FF) shl 16) + ((A and $FF) shl 24);
END;
cyborg (2004-10-23 15:13:00) [10]Какой ещё лефт сайд не асигнед, dec(Color);? Тут вообще нет никакой стороны.
Malefic (2004-10-23 13:40:00) [11]Left side cannot be assigned to
cyborg (2004-10-23 13:01:00) [12]
> ведь переменная Color - это cardinal и ее нельзя просто
> dec(Color);
Мда, почему это нельзя?