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