Текущий архив: 2003.07.07;
Скачать: CL | DM;
Вниз
DelphiX Найти похожие ветки
← →
Agent[007] (2003-06-14 09:14) [0]А почему так ?...
Я написал прогу, которая не тормозила вообще...
А когда вставил Background (TBackgroundSprite) все начало страшно тормозить.
ПОЧЕМУ ???
← →
Карлсон (2003-06-14 10:29) [1]как грится: "код в студию"!
← →
Agent[007] (2003-06-14 20:27) [2]Ну тут не весь код... Т.к. весь код отрисовки объектов очень большой...
var bg :TbackgroundSprite;
...
bg:=TBackgroundSprite.Create(DXSpriteEngine1.Engine);
bg.Image:=DXImageList1.Items.Find("bg");
bg.SetMapSize(640,480);
...
bg.Destroy;
...
← →
Agent[007] (2003-06-14 20:50) [3]А если нужен полный код, то:
var
m,c,br:TImageSprite;
bg:TBackgroundSprite;
q,w : Integer;
begin
DXDraw1.Surface.Fill(0);
bg:=TBackgroundSprite.Create(DXSpriteEngine1.Engine);
bg.Image:=DXImageList1.Items.Find("bg");
bg.SetMapSize(640,480);
m.Image:=DXImageList1.Items.Find("model");
for q:=0 to 39 do for w:=0 to 29 do
if Map[q,w]=1 then begin
br:=TImageSprite.Create(DXSpriteEngine1.Engine);
br.Image:=DXImageList1.Items.Find("brick");
br.Width:=br.Image.Width;
br.Height:=br.Image.Height;
br.X:=q*16;
br.Y:=w*16;
DXSpriteEngine1.Draw;
br.Destroy;
end;
c:=TImageSprite.Create(DXSpriteEngine1.Engine);
c.Image:=DXImageList1.Items.Find("cur");
c.Width:=c.Image.Width;
c.Height:=c.Image.Height;
c.X:=cx;
c.Y:=cy;
m:=TImageSprite.Create(DXSpriteEngine1.Engine);
m.Image:=DXImageList1.Items.Find("model");
m.X:=MX;
m.Y:=MY-47;
m.Height:=m.Image.Height;
m.Width:=m.Image.Width;
DXSpriteEngine1.Draw;
DXDraw1.Flip;
bg.Destroy;
m.Destroy;
c.Destroy;
end;
← →
Карлсон (2003-06-14 21:01) [4]пардон, это все в таймере стоит что ли?
если да - то не мудрено, почему тормозит!
достаточно вставить в код таймера вот такие строки:
with DXDraw1.Surface.Canvas do
begin
Brush.Color:=clBlack;
Font.Color:=clLime;
Font.Size:=14;
DXDraw1.Surface.Canvas.TextOut(30,0,IntToStr(DXSpriteEngine1.Engine.AllCount));
Release;
end;
что циферьки показывают?
то то же.
получается, что на каждый тик таймера создаются и создаются объекты.
лично я делаю следующим образом:
type
TBackground = class(TImageSprite)
public
constructor Create(AParent: TSprite; Picture: TPictureCollectionItem; SprX, SprY: double);
end;
constructor TBackground.Create(AParent: TSprite; Picture: TPictureCollectionItem; SprX, SprY: double);
begin
inherited Create(AParent);
Image:=Picture;
width:=image.width;
height:=image.height;
x:=SprX;
y:=SprY;
z:=0;
end;
procedure TForm1.DXDraw1InitializeSurface(Sender: TObject);
begin
TBackground.Create(DXSpriteEngine1.Engine,Form1.BackgroundPix.Items.Find("mainback"),0,28);
end;
может конечно и не оптимально, но я не жалуюсь :)
← →
Agent[007] (2003-06-15 10:18) [5]Thanks... ;)
← →
Agent[007] (2003-06-16 21:16) [6]Блин... Все-равно тормозит...
Хотя вставил как надо - без ошибок...
← →
Omar2002 (2003-06-16 22:26) [7]А машина какая?
← →
Карлсон (2003-06-16 22:49) [8]может и не в машине дело.
что значит "Хотя вставил как надо - без ошибок..."?
видимо передрал, но где нужно подправил.
а нужно было все самому ручками набить.
да, так дольше, но зато и пользы от этого болше.
и еще.
а какая картинка то?
масса-габариты можно узнать?
небось BMP на пару мегов?
и что значит "тормозит"?
каково падение ФПС? со скольки до скольки?
хотя может Omar2002 и прав, это может уже сама видюха тормозить.
да, и какая задержка у таймера?
← →
Agent[007] (2003-06-17 11:47) [9]
Timer.Interval:=0;
bg.bmp [1134 Kb]
И все остальные картинки тоже в БитМап... А че из-за этого может тормозить?
← →
Карлсон (2003-06-17 12:19) [10]гм...
странно.
че ж оно тормозит? ;)
у меня фон в меню - картинка 800х544. в JPEG занимает 60Kb, в BMP - 1,24Mb.
задержка у таймера 30. ФПС как было 33, так и остался :\
поставил задержку на 0. ФПС 75-73 в обоих случаях.
видимо не в этом дело.
при задержке 0, я поставил SystemMemory:=True в свойствах картинки, ФПС сразу упало до 38-37.
это наблюдается как с BMP, так и с JPEG.
вывод - выставить SystemMemory в False и посмотреть, что будет. и конечно желательно перевести бэкграунд в JPEG формат. а то уж очень много жрет, да и компилится поэтому медленно(у меня).
← →
Agent[007] (2003-06-17 15:38) [11]А с JPEG"ом у меня Background не выводится (твоим способом)
← →
Карлсон (2003-06-17 17:11) [12]<Удалено Модератором>
...
нужно подключать модуль JPEG в uses.
тогда все будет работать!
и вообще, помогло или как?
← →
Agent[007] (2003-06-21 20:43) [13]За всё спасибо... Помогло... ;)
Страницы: 1 вся ветка
Текущий архив: 2003.07.07;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.008 c