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

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

DD and Color


Страницы:   1 2 3

Evgeniy_K ©   (2004-07-30 20:39:00) 

Как вы считаете какой оптимальней юзать цвет в DD проекте?

Кое-кто настоятельно рекомендует 8-бит. Где-то написано, что можно и 16-бит.

Попробовал 32-бит. Начинает тормозить при создании проекта средней сложности.

А что скажете вы?


Sapersky   (2004-08-02 12:44:00) [21]

почитаем-с...
На самом деле, автор там местами явно перегибает, так что на 100% верить не рекомендую (что поверхность при локе полностью копируется в системную - сомнительно, скорее, копируется только то, что нужно, т.к. нет разницы по скорости, блокировать нужный кусок или всю; ну и ещё кое-что, см. также мои комментарии к статье).
И вывод, кстати, тоже хорош - непосредственный доступ работает с приемлемой скоростью только с новыми картами (уровня GeForce). Которые рассматриваемый в статье предмет (блендинг) могут делать аппаратно :)
Впрочем, бывалым DD-шникам, это, кажется, глубоко фиолетово - им хоть GeForceFX дай - будут блокировать и блендить попиксельно.
Ну всё-таки намекну ещё раз: D3D7 может работать вместе с DD, так что не придётся выбрасывать существующий код и переписывать всё заново. Пример могу дать.

А у тебя спрайты на одной поверхности собраны или нет?
Точно. А я и забыл. У Краснова был пример, где показана разница - в скорости инициализации, в основном, но и вывода тоже.


NikeOLD   (2004-08-02 11:49:00) [22]

А у тебя спрайты на одной поверхности собраны или нет? Если на разных, то вот тебе и падение в производительности. У меня 600 спрайтов (примерно твоих размеров) в 32 даже на старенькой Риве лихо тянут. При этом иногда вращается битмап размером 200 на 200 в ручном режиме (FPS конечно падает, но не смертельно).
1. Сделай свои спрайты на одной-двух поверхностях.
2. Распредели так, чтобы малоиспользуемые были в системной памяти.
3. Иногда оправданне держать в системной памяти задний буфер, а не спрайты. Надо следить какая поверхность где создается. ОЧень может быть, что в твоем случае все спрайты в системной памяти сидят.


Evgeniy_K   (2004-08-02 11:16:00) [23]

если важен размер, то 16, качество - 32


parovoZZ   (2004-08-01 20:12:00) [24]

А вот в фотошопе с какой глубиной лучше сохранять бмп-шку?


Evgeniy_K   (2004-08-01 20:05:00) [25]

почитаем-с...


Sapersky   (2004-08-01 19:18:00) [26]

То, что без эффектов (блиттингом) - создавать в видео. То, что с эффектами - в системной, плюс ещё можно фрагмент бэкбуфера при непосредственном доступе загонять в системную, применять эффект, и обратно в видео ( на Королевстве Дельфи была статья - http://www.delphikingdom.ru/asp/viewitem.asp?UrlItem=/helloworld/directx4.htm)


Evgeniy_K   (2004-08-01 15:57:00) [27]

Попиксельно рисуется всего-то несколько эффектов, где-то 10000 пикселей/кадр - максимум, в наихудшем случае. Если убирать эти эффекты, то все равно тормозит прилично, но работает где-то в 2 раза побыстрее, чем с ними.


Sapersky   (2004-08-01 14:09:00) [28]

Но я использую доступ к пикселям на прямую - вот из-за этого и падает, но почему так сильно.

Что, ВСЕ выводятся непосредственным доступом? Надо сказать, что DD предназначен в первую очередь для блиттинга, и если в обязательном порядке нужно рисовать попиксельно, возможно, лучше и софтвер (или некая смесь, как у Miek'а в последней версии SpriteUtils - всё рисуется софтверно на поверхность в системной памяти, потом она блиттится на экран).
И что именно делается этим непосредственным доступом? Может, всё-таки можно задействовать D3D, а то такие мощности (GeF4) - и простаивают, по сути.
По DD могу порекомендовать только убрать DDLOCK_NOSYSLOCK, если он используется. Хотя принципиально это процесс не ускорит.


Evgeniy_K   (2004-08-01 12:19:00) [29]

Странно. Может, какая-то поверхность создаётся другого (16-битного, например) формата, и из-за конвертирования скорость так сильно падает.
Вот я тоже удивляюсь. Поверхности все 32. Но я использую доступ к пикселям на прямую - вот из-за этого и падает, но почему так сильно. Стоит мне поменять PWORD на PDWORD, так сразу все начинает сильно тормозить.

У меня на GF2MX 32 бит медленее примерно в 2 раза - как и полагается.
Да, так и должно быть,: 2-3 раза, а у меня выходит 6-10 раз :-?

У кого есть какие мысли?


cyborg   (2004-07-31 20:25:00) [30]


> как на экран помещается 2700 спрайтов

Посчитай - узнаешь.


> [10] Evgeniy_K   (31.07.04 14:23)

В видеопамяти будет быстрее выводиться. Грузи всё в видео, будет быстро, а твои создания 32 битовых поверхностей в оперативке тормозят.


Sapersky   (2004-07-31 19:46:00) [31]

Если поставить поддержку 32-битных цветов, но на GeF4 FPS падает с 300 до 30.

Странно. Может, какая-то поверхность создаётся другого (16-битного, например) формата, и из-за конвертирования скорость так сильно падает. На то, что видеопамяти не хватает - не похоже, её у GeF4 навалом, наверное.
У меня на GF2MX 32 бит медленее примерно в 2 раза - как и полагается.

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

Возможно, этот кто-то имел в виду - блокировка (Lock) быстрее. Это да. Но блиттинг всегда быстрее с видео - сам подумай, если бы видеопамять была медленнее, зачем она тогда? Сравни частоты. Расстояние в см от чипа видеокарты до той и другой памяти :)

А DD в 7 раз производительнее GDI.

Это зависит от случая... Вполне допускаю и такой, при котором DD окажется медленнее - чем дядя Билли не шутит.


Evgeniy_K   (2004-07-31 14:23:00) [32]

Я говорю исключительно про DD. Если поставить поддержку 32-битных цветов, но на GeF4 FPS падает с 300 до 30.

И еще неясно почему работа идет быстрее, когда поверхность в видеопамяти, а не в системной. Кто-то мне говорил, что видео медленнее, чем системная, а на практике выходит наоборот. При том, что на разных картах зависимость сохраняется.

Смотрел результаты тестов winbench и 3dmark в инете, так там примерно такая же картина, но все-таки падение в 5 раз, а не в 10.

Тут с человеком поспорили, он утверждает, что 32-бит должно летать в DD, потому что у него летает в GDI. А DD в 7 раз производительнее GDI.

Я в тупике...


Sapersky   (2004-07-31 14:08:00) [33]

Кое-кто настоятельно рекомендует 8-бит

8 бит со свистом пойдут и в софтвере.

16, 32 - вообще разница в скорости есть, на картах с относительно медленной памятью (самых распространённых) может быть в два раза. Хотя что может тормозить в проекте DD (и как на экран помещается 2700 спрайтов) - непонятно. Если это частицы (particles) - см. Direct3D, большое кол-во одинаковых спрайтов он выводит быстрее, не говоря уже о возможных спецэффектах.


Evgeniy_K   (2004-07-31 12:04:00) [34]

А кто-нибудь когда-нибдь делал игру с поддержкой 32-бит под DD? Какие скорости были и сколько эффектов было заложено?


cyborg   (2004-07-30 22:30:00) [35]

Это если спрайты в видеопамяти.


cyborg   (2004-07-30 22:29:00) [36]

смотря на какой видеокарте и процессоре, у меня например 2700 спрайтов размером 20х20 ~40 кадров в секунду выводится.
GF FX 5200 + Duron 800 + PC133 + XP
в 98-ом в 1,5-2 раза быстрее.


Evgeniy_K   (2004-07-30 22:16:00) [37]

Сколько в среднем объектов?


cyborg   (2004-07-30 22:09:00) [38]

Любой.


Evgeniy_K   (2004-07-30 22:04:00) [39]

А 16-битовый какой сложности проект выдержит?


parovoZZ   (2004-07-30 21:39:00) [40]

В принципе можно использовать 256 цветов, но всё-же 16-битный цвет выглядит куда более красочнее. 32 - это, имхо, перебор для DD.


Страницы:   1 2 3

Наверх

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