![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ГЛЮЧНОСТЬ В 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 тебе уже в принципе не нужен.