![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как реализовать графику на 2D движке [Delphi, Windows]
gray_falcon © (2007-05-29 15:51:00)Как можно осуществить быстрый вывод изображений с удалением фона и изменением размера, их быструю загрузку в ОЗУ, желательно без DirectX? А то мои прошлые "графические движки", если они вообще таковыми являлись, работали со скоростью бешеной черепахи.
Vga (2007-06-02 07:37:00) [41]~1200FPS на демке homm, ~1000FPS на демке XProger :)
XProger (2007-06-02 02:39:00) [42]Меряться так меряться...
http://xproger.mirgames.ru/tmp/test.rar- даёт 860 FPS против твоих 260 :)
твой ход...
homm (2007-06-02 00:04:00) [43]Обновил архив. Так и не понял, зачем имеено «разноцветными квадратами», но добавил и патернов, выбирай какой нравиться бльше :)
XProger (2007-06-01 23:08:00) [44]homm, а можешь это сделать разноцветными квадратами с нормальным циклом отрисовки расчитывающим РЕАЛЬНЫЙ фпс в зависимости от кол-ва отрисованных кадров за последнюю секунду? За реализацию на OpenGL в таком случае - возьмусь.
homm (2007-06-01 22:31:00) [45]Кстати, XProger (и не только), помнишь кто-то спрашивал, как можно наиболее оптимально заполнить поле 640х480 квадратами 8х8? Я вылизал алгоритм до самого предела. Если интересно, кто-нибудь возметься реализовать такое на апаратном ускорении (каком — без разницы), чисто ради сравнить результаты? Мне почему-то кажеться, что быстрее не может получиться.
Вот что у меня получилось по скорости в полном software: На формирование одного кадра уходит примерно 3,1 МГц, что соответствует примерно 1760/3,1 =566 кадров в секунду! Причем если отключить только одну функцию BitBlt, переносящую результат на экран, получаем примерно 1760/1,6 = 1076 кадров в секунду! Конечно второй показатель практически безполезен, без блитинга в видеопамять.
В обшем вот архив с проектом и демкой (30 Кб)
http://homm86.narod.ru/files/fps.rar
homm (2007-06-01 21:16:00) [46]> homm, сомневаюсь что твой GDI движок способен выводить столько
> контента с достойной скоростью на таком разрешении.
Да я спорю что-ли :), я про то что Alien Shooter выдает фэпээсов совсем не «и даже» :))
@!!ex (2007-06-01 20:12:00) [47]> XProger © (01.06.07 19:19)
Не, никто не спорит, что CPU+GPU быстрее, чем CPU. Но все же ИМХО не стоит сбрасывать все это сосчетов.
XProger (2007-06-01 19:19:00) [48]homm, сомневаюсь что твой GDI движок способен выводить столько контента с достойной скоростью на таком разрешении.
Домик (2007-06-01 13:20:00) [49]> сейчас вышел Alien Shooter полный 3D !
Если имеется в виду Alien Shooter 2, то спешу вас огорчить, там все 2D.
homm (2007-06-01 09:14:00) [50]> И даже такой скорости тебе никакой GDI движок не даст )
Что значит «И даже такой» ? :) Он у меня 300-500 fps выдет :)
Yashin (2007-05-31 21:50:00) [51]сейчас вышел Alien Shooter полный 3D !
@!!ex (2007-05-31 21:15:00) [52]Хм. Я навино полгалал, что Алиен Шутер - смесь 3Д и 2Д. Я ошибался? :)) Надо будет на dtf спросить.
XProger (2007-05-31 21:13:00) [53]gray_falcon, ядро у Alien Shooter основано на DirectX. И даже такой скорости тебе никакой GDI движок не даст )
gray_falcon (2007-05-31 20:44:00) [54]
> PixelFormat пробовал?
еще как пробовал. Все идет ОК, теперь е*... мучаюсь со способами хранения групп изображений для последующего вывода.
А вообще я взял себе за образец движок игры "Alien Shooter" (играл кто-нибудь? Он мне больше нравится чем некоторые 3D шутеры). По моему это хороший ориентир. Ну дак вот там изображения хранятся в файлах *.vid и выводятся один за одним в зависимости от угла поворота. Щас разрабатываю эту структуру хранения различных видов объекта.
XProger (2007-05-31 11:33:00) [55]http://timeforkill.mirgames.ru/img/scr/5.jpg- OpenGL
Мне страшно представить сколько нужно угрохать сил и нервов, чтобы заставить даже это работать на GDI... про FPS я, как человек культурный, промолчу )
cyborg (2007-05-31 09:35:00) [56]> [11] gray_falcon © (31.05.07 00:13)
Попробуй http://miniforum.ru/show.php?&forum=8&theme=136
Там используется директ икс, но с ним ты не будешь иметь дело напрямую.
Sapersky (2007-05-31 02:43:00) [57]Охото глянуть, как там софтвере сделан.
Additive - FastLIB'овский AddBlend.
Alpha - конвертированный под FastLIB MMXAlphaPut из SpriteUtils.
Кстати, с альфой довольно шустро работает функция GDI AlphaBlend, хотя, говорят, нестабильно в Win9x. Я тестировал на Win2000 - вроде всё нормально, скорость cопоставима с MMXAlphaPut, хотя AlphaBlend в некотором смысле "мухлюет" - использует premultiplied alpha, т.е. нужно заранее умножить на alpha пиксели исходной картинки.
От слов к делу! Покажите или исходничек без DX
Если по этому поводу:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1180354902&n=7
то PixelFormat пробовал?
Я у себя проверял - действительно быстрее, но на разных ОС и драйверах оно может быть по-разному, поэтому выразился осторожно.
Теоретическая основа такая:
32 бита:
1) мелкософт умудряется писать жутко кривой код для обработки 24-битных картинок (притом что именно этот формат до XP включительно является стандартом). Проверено также со StretchBlt, и не только мной - 32-битные битмапы значительно быстрее.
2) на некоторых картах копирование на экран быстрее если формат битмапа = формату рабочего стола, а обычно стоит именно 32 бита.
pfDevice:
при выводе таких битмапов может использоваться (и обычно используется на NT-семействе, хотя зависит от драйвера) аппаратное ускорение, но только для простых операций вроде BitBlt и TransparentBlt (StretchBlt не ускоряется). Доступ к пикселям (Pixels, Scanlines) такого битмапа получить нельзя, точнее можно, но очень медленно.
Если так уж надо исходничек примера с блендингом - завтра, может быть... то есть, гм, сегодня, но днём.
gray_falcon (2007-05-31 00:13:00) [58]От слов к делу! Покажите или исходничек без DX, ну или даже с DX (как бы мне сейчас не хотелось его использовать).
И еще, я пока не разрабатываю игру графикой похлеще чем в Готике 3 или Думе 3, и с поддержки DirectX 10, поэтому мне особо не нужны на этом движке яркие спецэффекты.
Это не отрицание DX, просто хотел провести разминку перед тем как писать с помощью него
homm (2007-05-30 22:53:00) [59]Кстати, нельзя ли гденить еще исходчег выложить? Охото глянуть, как там софтвере сделан.
homm (2007-05-30 22:18:00) [60]> Есть у меня тест на блендинг (полупрозрачность) - exe, 30 кб:
> http://slil.ru/24440980
Это что еще за троян? Зачем она в сеть просится?