- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
function LockBack:bool;
var sd:tddsurfacedesc2;
begin
fillchar(sd,sizeof(sd),0);
sd.dwSize:=sizeof(sd);
result:=fbacksurface.Lock(nil,sd,DDLOCK_SURFACEMEMORYPTR or ddlock_nosyslock or DDLOCK_WAIT,0)=dd_ok;
if not result then exit;
BackPtr:=sd.lpSurface;
end;
function UnLockBack:bool;
begin
result:=fbacksurface.UnLock(nil)=dd_ok;
BackPtr:=nil;
end;
function MakeSceenBackPtr:bool;
begin
result:=true;
if backptr=nil then
result:=lockBack;
end;
function GetSceenSafeBackPtr:pointer;//use only this
begin
result:=nil;
if not MakeSceenBackPtr then exit;
result:=backptr;
end;
Тот же проЭкт, что и ниже на DirectDraw7.
Не смотря на то, что была функция function UnLockBack:bool; - она никогда не вызывалась. Странно, что на многих машинах это работало, тк я успешно выполнял блитинг в заблокированные поверхности в течении многих часов. :D
guest 15.03.2010 18:35 # 0
guest 15.03.2010 18:39 # −1