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

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

GDI Анимация в kol-e


puky ©   (2003-11-07 22:13:00) 

Кто нибудь делал анимацию на коле? Без direct-a и OpenGl-a, только на gdi.


Sapersky   (2003-11-11 10:52:00) [1]

перемещение и изменение размеров больших(800-600) картинок (5-20 штук)

DirectX потянет такое в случае наличия приличной видеокарты (с ходу сказать сложно, но, наверное, начиная с TNT). GDI - не потянет в любом случае. Выбирайте :)

В оконном режиме директ-Х медленнее, чем GDI.

Тормоза в оконном режиме DirectDraw могут быть в том случае, если задний буфер (теневая страница, как вы его называете), не влезает в видеопамять, помещается в системную и на каждом кадре перегоняется через шину (скорее всего PCI, AGP-карты обычно имеют больше памяти) в видеокарту.
Например, если этой памяти 1 мб и установлено разрешение 800*600*16. Сколько остаётся под буфер - считайте сами. В этом случае лучше не создавать буфер, а рисовать прямо на первичную поверхность. В параметрах Blt есть специальный флаг для устранения расхождения (DDBLT_NOTEARING или как-то так). Я пробовал - вполне прилично, особого мерцания нет.

Ещё вариант - если задний буфер поместился в видеопамяти, но вы его блокируете на каждом кадре (Lock) и заполняете вручную. Это медленно даже на GeForce, DirectDraw просто на такое не рассчитан. Он рассчитан на аппаратные манипуляции с изображениями, а если нужно часто блокировать - создавайте поверхность в системной памяти и потом оттуда аппаратно (если видео может) перегоняйте в видеопамять. Конечно, если видеокарта стоит на PCI - это будет медленно; и GDI, ВОЗМОЖНО, будет быстрее. Но у какого процента пользователей остались PCI-карты с 1 Мб памяти? Если вы в их рядах - тогда конечно :), но можно же подумать и об остальных 99%...

Если в полном экране можно хотя бы выполнять отрисовку в теневую страницу, и потом делать обмен, то да, ускорение будет. А если нет, то откуда оно возьмется, ускорение?

Даже PCI-ные S3 Trio и Virge (да и любая другая совместимая с windows видеокарта) могут хранить поверхности в видеопамяти (если её хватает) и делать аппаратный блиттинг. Что в полноэкранном, что в оконном режиме. Проблемы могут быть по указанным ранее причинам.

На совсем старых картах - да, такая функция (overlay вроде бы) не доступна и прироста скорости, возможно, нет. Но почти на всех не сильно древних картах она есть.

Точно, на Trident 3D, на Rage 3D есть - и та, и другая порядочное барахло (у первой "3D" фактически только в названии, у второй - на уровне Voodoo 1), а вот поди ж ты... На TNT и далее - само собой. К тому же оверлеи нужны (точнее, фактически могут использоваться) только для фильмов или режима overlay mode WinAmp'овского AVS.


Gandalf   (2003-11-09 14:27:00) [2]

2puky:

Не сюда! В целом для GDI можно сказать что нет.


puky   (2003-11-09 13:56:00) [3]

Быстрее bitblt есть что-нибудь?


Vladimir Kladov   (2003-11-09 13:43:00) [4]

Хотя бы мой компонент для отрисовки GIF. Это на самом деле, мало имеет отношения к KOL. Это просто программирование графики. Хоть на чем, от ассемблера до бэйсика.


puky   (2003-11-09 13:30:00) [5]


Чушь. В оконном режиме директ-Х медленнее, чем GDI. Загрузите мой EmuZWin, и посмотрите, что он может в окне, развернутом на весь экран. Анимация идет 50 кадров в секунду без проблем.

Можно пример отрисовки?


Gandalf   (2003-11-08 19:29:00) [6]

Есть просто игры - ничего KOL специфичного в целом тут нет.


puky   (2003-11-08 19:14:00) [7]

Так нет еще форума "Игры на Kol-e" :)


Gandalf   (2003-11-08 19:07:00) [8]

GDI может не так мало как кажется, это точно. А метод простой Draw :) Чтобы не моргало буферизируй. А вообще тебе скорей в форум игры надо.


SPeller   (2003-11-08 18:54:00) [9]


> Если в полном экране можно хотя бы выполнять отрисовку в
> теневую страницу, и потом делать обмен, то да, ускорение
> будет. А если нет, то откуда оно возьмется, ускорение? В
> оконном режиме эта операция недоступна. Может на новых картах
> это есть, на старых - точно нет.

На совсем старых картах - да, такая функция (overlay вроде бы) не доступна и прироста скорости, возможно, нет. Но почти на всех не сильно древних картах она есть. Там не важно оконный режим или нет - видеокарте нужно лишь цвет, поверх которого выводить нужное нам изображение. Я сам как-то ради прикола смотрел фильм в Paint'е :)


Vladimir Kladov   (2003-11-08 18:03:00) [10]

а запустите фильм на видеокарте без ускорителя. Или просто на слабой карте, с 16 метрами на борту и меньше. Правда, сейчас уже слабой считают 32 метра и меньше :)

И вообще, я про оконный режим. Если в полном экране можно хотя бы выполнять отрисовку в теневую страницу, и потом делать обмен, то да, ускорение будет. А если нет, то откуда оно возьмется, ускорение? В оконном режиме эта операция недоступна. Может на новых картах это есть, на старых - точно нет.


SPeller   (2003-11-08 17:35:00) [11]

Тогда почему фильмы с DirectDraw-ускорением рисуются гораздо быстрее, чем без него?


puky   (2003-11-08 17:15:00) [12]

Хорошо, как тогда делать отрисовку/обновление картинки? по таймеру, в триде, в цикле?


Vladimir Kladov   (2003-11-08 15:41:00) [13]

Чушь. В оконном режиме директ-Х медленнее, чем GDI. Загрузите мой EmuZWin, и посмотрите, что он может в окне, развернутом на весь экран. Анимация идет 50 кадров в секунду без проблем.


puky   (2003-11-08 14:13:00) [14]

DirectX поможет?


SPeller   (2003-11-08 13:40:00) [15]

Тогда забудь про GDI.


puky   (2003-11-08 12:38:00) [16]

Перемещение и изменение размеров больших(800-600) картинок (5-20 штук).


SPeller   (2003-11-08 06:47:00) [17]

Анимация разная бывает. Ты про какую именно?


Наверх

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