Текущий архив: 2003.05.19;
Скачать: CL | DM;
Внизкак исправить? Найти похожие ветки
← →
Карлсон (2003-04-29 20:41) [0]в конференции "Игры"
есть пост некоего mad по поводу эффекта Fade на ассемблере.
он приводит код:
unit DDFade;
interface
uses DirectDraw;
procedure FadeIn (Target:IDirectDrawSurface7; Step:Byte);
implementation
procedure FadeIn (Target:IDirectDrawSurface7; Step:Byte);
//Fade - эффект в режиме 32bpp с ускорением MMX
var
Desc:TDDSurfaceDesc2;
ReAddress:Integer;
Mask:Cardinal;
begin
Step:=Lo (Step);
Mask:=Step+Step shl 8+Step shl 16;
Target.Lock (nil,Desc,nil,nil);
ReAddress:=Desc.lPitch-Desc.dwWidth*4;
asm
push edi
mov edi,Desc.lpSurface
mov ecx,Desc.dwHeight
movd mm1,Mask
@Line: push ecx
mov ecx,Desc.dwWidth
@Pixel: movd mm0,[edi]
subusb mm0,mm1 //addusb mm0,mm1 для FadeOut
movd eax,mm0
stosd
loop @Pixel
pop ecx
add edi,ReAddress
loop @Line
emms
pop edi
end;
Target.UnLock (nil);
end;
end.
в коде неправильна строка Target.Lock (nil,Desc,nil,nil);
а также компилятор ругается на subusb mm0,mm1
с ассемблером я не знаком, но очень хочется увидеть получающийся эффект, а также узнать, насколько эффективен данный код по сравнению с обычным (например вот тут http://delphimaster.net/view/9-1050737499/)
помогите пожалуйста!
← →
NetBreaker666 (2003-04-29 20:55) [1]
psubusb mm0,mm1
А вот с lock ничего поделать не могу :(
Страницы: 1 вся ветка
Текущий архив: 2003.05.19;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.007 c