![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемы с FPS
Xenon © (2005-06-13 09:19:00)Здрасте ув. мастера. Давно я здесь уже не был. Сразу перейду к делу. Пишу на PD, че-то так левое, типа редактора карт так вот как я помню, а помню я вроде юы нормально :), что карта состоит из тайлов и, что она является ничем другим как двумерным массивом и, что каждый тайл - это номер элемента доп. 0-трава,1-вода. Так вот я все так и делаю но почему-то когда карта у меня выводится, то FPS падает до нуля и начинаются жуткие тормоза? Помогите плз.
Sphinx (2005-06-16 16:21:00) [1][offtop]
Сорри за орфографию...не из дома...не своя клавиатура и т.д.
[/offtop]
Sphinx (2005-06-16 16:20:00) [2]Честно не знаю как оно не PD но на DDraw делал карту вплодь до 4096х4096 на отдельной поверхности. А на экран выводиль лишь часть равную:
OffSetX, OffsetY, OffSetX + ScreenWidth, OffSetY + ScreenHeight;
что-то в этом духе...
По субъективным оценкам всеже прощи и быстрее чем каждый кадр перестраивать карту по тайлам, плюс - можно смещать не на ширину тайла (хот наверно у тебя такой проблемы не возникало ;) )
Домовенок (2005-06-16 02:19:00) [3]Xenon (15.06.05 14:39) [10]
Правильно XProger [12] подметил...
Рисуй только видимые тайлы - те которые попадают в видимую область.
XProger (2005-06-15 18:38:00) [4]Xenon, все 125х125 тайлов видны на экране одновременно? ;)
cyborg (2005-06-15 14:47:00) [5]
> Вот как бы мне вот енто все оптимизировать??????
Переделать, следая данным советам, ни одного не игнорируя.
Xenon (2005-06-15 14:39:00) [6]Спасибо огромное за советы, но тут другая проблемка возникла. Вот карты размером 100*100 еще не дают тормозов, а вот доп. 125*125 уже дают. Вот как бы мне вот енто все оптимизировать??????
XProger (2005-06-14 16:50:00) [7]Грузим мы так:
for i:=0 to mapH do begin
for j:=0 to mapW do begin
А рисуем так:
for i:=1 to maph do begin
for j:=1 to mapw do begin
Есть предложение делать вот так:
for i := 0 to maph - 1 do
for j := 0 to mapw - 1 do
begin
...
end;
Ещё предложение сделать grass дин массивом:
var
grass : array of array of TElementMap;
Затем перед его заполнением в инициализации:
SetLength(grass, mapW, mapH);
Sapersky (2005-06-14 15:17:00) [8]grass[i,j].image.TransparentColor:=clblack;
Возможно, при этом выполняется блокировка и заполнение альфа-канала. Так что вынести в инициализацию.
cyborg (2005-06-14 09:32:00) [9]Твоя структура:
> grass:array[0..1000,0..1000] of TElementMap;
в памяти занимает более 16 мегабайт по предоставленным данным до точек в записи telementmap, и-то, если там структура Image:Tagfimage; - ссылка на объект, если это ещё одна структура/запись, то всё1 гораздо запущеннее получается, тут и без вывода графики тормозить будет, кеш процессора не резиновый, чтобы такие объёмы данных вмещать.
cyborg (2005-06-14 09:27:00) [10]
> Так вот, что я неправильно делаю????????
Всё :)
cyborg (2005-06-14 09:25:00) [11]
> XProger не угадал размер 8Х8 и уже тормоза
Вот это grass:array[0..1000,0..1000] of TElementMap;8х8?
Тормоза вот от этого:
> grass[I,J].image.create(form1.powerdraw1);
> grass[I,j].image.loadfromfile(‘grass.tga’,……..);
так нельзя делать, если хочешь, чтобы компьютер не падал со стола.
Xenon (2005-06-14 09:11:00) [12]Во-первых XProger не угадал размер 8Х8 и уже тормоза
Как я загружаю? Не, я лучше напишу принцип: то есть
type telementmap=record
width, height:integer;
X,Y:integer;
Num: integer;
Image:Tagfimage;
………..
end;
var
grass:array[0..1000,0..1000] of TElementMap;
I,j:integer;
mapH,mapW:integer;
………….
потом при загрузке формы пишу
mapW:=4;
mapH:=4;
for i:=0 to mapH do begin
for j:=0 to mapW do begin
grass[I,J].image.create(form1.powerdraw1);
grass[I,j].image.loadfromfile(‘grass.tga’,……..);
end;end;
после этого в PowerTimer1.render пишу
…………
for i:=1 to maph do begin
for j:=1 to mapw do begin
grass[i,j].image.TransparentColor:=clblack;
form1.PowerDraw1.RenderEffect(grass[i,j].image,grass[i,j].x,grass[i,j].y,grass[i,j].num,effectsrcalpha);
end;end;
…………………….
Так вот, что я неправильно делаю????????
Sphinx (2005-06-13 18:59:00) [13]2 XProger
Теперь я знаю как выглядят местные телепаты ;)
XProger (2005-06-13 12:01:00) [14]карта 1024х1024 тайла?
видео рива тнт 2?
тайлы с включённым блендингом? ;)))
cyborg (2005-06-13 11:56:00) [15]Ты не полную информацию дал.
Расскажи сначала свои выводы по какой причине и где тормозит?
И покажи участки кода, из за которых по твоему мнению тормозит.
Не понятно по твоему сообщению как оно у тебя работает.