Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ГЛЮЧНОСТЬ В DELPHIX [Delphi, DelphiX, Windows]


Аццкий_рыцарь:) ©   (2005-12-25 03:07:00) 

можно ли как-то ускорить ДелфиХ? а то когда выводишь на экран больше чем где-то 60 спрайтов, то он "неподецки" начинает глючить. Машина у меня не слабая, так что дело не в ней :(


Аццкий_рыцарь:)   (2006-01-11 22:26:00) [1]

П7 у меня дум 3 на средних настройках идет без глюков :) а делфи глючит ггг


П7   (2006-01-11 11:31:00) [2]

Для ускорения DelphiX нужно всего-лишь купить мощный процЫк! (:


Дорогие РОССИЯНЕ :)   (2006-01-07 23:06:00) [3]


> Проще, если конесно знаешь OpenGL!
> else - нет!

Надо же когда-то начинать :) В любом случае все стремится к этому


JUS   (2006-01-07 20:46:00) [4]


> OSokin ©   (07.01.06 17:46) [13]
> Лучше юзать TDXSpriteEngine. Оно поддерживает динамику,
> позволяет быстро удалить объект. TImageSprite лучше юзать
> тогда, когда это нужно, т. к. оно делает и поворот, и альфу
> по дефолту.

лучше то лучше, если это тот спрайт который надо поворачивать, иначе зря грузить память


Cash   (2006-01-07 19:03:00) [5]

QwertyKz ©   (07.01.06 18:19) [14]:
Проще, если конесно знаешь OpenGL!
else - нет!


QwertyKz   (2006-01-07 18:19:00) [6]

А не проще уж тогда на OpenGl'e все делать :) ?


OSokin   (2006-01-07 17:46:00) [7]

Лучше юзать TDXSpriteEngine. Оно поддерживает динамику, позволяет быстро удалить объект. TImageSprite лучше юзать тогда, когда это нужно, т. к. оно делает и поворот, и альфу по дефолту.


Аццкий_рыцарь:)   (2005-12-30 04:00:00) [8]

2  JUS ща попробую это взять на заметку :)


JUS   (2005-12-29 12:42:00) [9]

А я создаю так

TPrimer=class(TImageSprite)
      public
   procedure DoMove (MoveCount:Integer);override;
   procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
  end;

var
Primer:array[0..999] of TPrimer; //предположим хотим использовать 1000 объектов, не больше
fPrimer:integer ;//использую чтоб знать сколько объектов создано, чтоб при выходе из "игры" отчистить память на такое же кол-во
i:integer; //просто счётчик
...
{создаю 1000 объектов}
For i:=0 to 999 do begin
   begin
 fPrimer:=fPrimer+1;
 Primer[fPrimer]:=TPrimer.Create(DXSpriteEngine.Engine);
 Primer[fPrimer].Image:=DXImageList.Items.Find('Primer');
 Primer[fPrimer].Width:=Primer[fPrimer].Image.Width;
 Primer[fPrimer].Height:=Primer[fPrimer].Image.Height;
 Primer[fPrimer].X:=XX;
 Primer[fPrimer].Y:=YY;
 Primer[fPrimer].Z:=ZZ;
   end;
end;
...
procedure TPrimer.DoMove(MoveCount:Integer);
begin
//???***???\\\
collision;
end;
...
procedure TPrimer.DoCollision(Sprite:TSprite;var Done:Boolean);
begin
//???***???\\\
end;
...
{отчищаем память при закрытии проекта}
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var cls:integer;
begin
for cls:=0 to fprimer do Primer[cls].Free;
end;


Вот и всё.

Если объекты пули, то их следует лучше "отчистить" в процессе игры, когда они долетели до цели или вылетили за экран.
Удачи!


Аццкий_рыцарь:)   (2005-12-29 04:10:00) [10]

2JUS а как правильно? я создаю клас, в нем конструктор, в конструкторе пишу все про спрайт по умолчанию. и все


JUS   (2005-12-28 11:27:00) [11]


> когда выводишь на экран больше чем где-то 60 спрайтов, то
> он "неподецки" начинает глючить. Машина у меня не слабая,
>  так что дело не в ней :(

Дело наверное в том что ты плохо учил ООП { Объектно орентированное программирование } У меня по началу тоже были такие глюки как у тебя, потом я взял книжку по делфи и прочитал про ооп. У меня на экране больше 700 спрайтов и не тормозит. Ты их не правильно выводиш на экран! потому и тормоза.


Аццкий_рыцарь:)   (2005-12-26 23:39:00) [12]

А можете плиз тут сылочку кинуть на ГЛсцен, рассказать как его устанавливать на 7 делфи и ссылочку на самое нормальное обучение :) на русском :) желательно с НУЛЯ


Fosgen   (2005-12-26 11:05:00) [13]

Можно, конечно. Только ряд блоков в ГЛСцене также придется переделывать. Например те же билборды. "Родные" от ГЛС тормозят нехило. И система частиц в ГЛС ограниченная по возможностям и опять-таки жрет ресурсы неслабо.
Я вот год назад начал проект на ГЛС, так теперь все больше и больше заменяю модули от ГЛС на свои...
Но для начала конечно ГЛС - очень и очень пользительно.


Xren   (2005-12-26 05:32:00) [14]

Аццкий рыцарь  Глсцене очень хороший продукт насчёт документации то  есть много демо примеров исходников с помощью которых можно научится,также есть несколько сайтов с статьями,и форумы.
Совет забуть ДельфиХ и переходи на ГлСцене там можно делать всё и реально можно создать любую игру на современном уровне.


Аццкий_рыцарь:)   (2005-12-26 00:55:00) [15]

А GLScene, по нему много документации на русском и исходников?
Это такой же пакет как и ДелфиХ?


Санёк   (2005-12-25 12:15:00) [16]

DelphiX очень тормозят при альфа прорисовке и при попиксельной проверке столкновений.

как уже сказали - UnDelphiX чуточку быстрее.
но нормальный проект на этих движках все равно не сделаешь.

посмотри Asphere - достаточно неплохая вещь, но у него проблема с документацией.

или GLScene...


Antonn   (2005-12-25 12:00:00) [17]

точно, нафиг дельфи икс, переходи вразу на машинные коды...


DR0N   (2005-12-25 10:46:00) [18]

Можно.. не использовать аццтойный DelphiX ....
А так немного можно ускорить используя UnDelphiX.


kruel   (2005-12-25 08:53:00) [19]

У меня P-4 1,8 и при 1000 спрайтах ничего не тормозит на 25 кадрах/в сек.
Может у тебя требовательные расчеты в DoMove, либо в DoDraw ты, например, рисуешь на канве по пикселям.
Тормозить будет страшно если используешь DrawAlpha, DrawRotate, DrawAdd.

А вообще DelphiX - это набор компонентов, который работает относительно медленно. Ускорить его можно, только тотально переписав. Но если ты это сделаешь, значит ты прекрасно значешь DirectX (лучше чем Hori), и DelphiX тебе уже в принципе не нужен.


Наверх

Титульная страница Поиск, карта сайта Написать письмо