Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.07.07;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.008 c
4-20365
4yguk
2003-05-04 19:43
2003.07.07
как функции-хуку общалься с прогой установившей хук?


7-20321
LexusU
2003-04-24 16:50
2003.07.07
Как захватить с веб-камеры картинку?


1-20080
maxon
2003-06-24 11:15
2003.07.07
ждать завершение процедуры


14-20296
Юрий Зотов
2003-06-19 17:55
2003.07.07
А погода-то наладилась (и снова встреча в Москве)...


1-20100
clickmaker
2003-06-23 19:13
2003.07.07
TTreeNode.MakeVisible не прокручивает TreeView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский