Форум: "Игры";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизКак реализовать графику на 2D движке Найти похожие ветки
← →
gray_falcon © (2007-05-29 15:51) [0]Как можно осуществить быстрый вывод изображений с удалением фона и изменением размера, их быструю загрузку в ОЗУ, желательно без DirectX? А то мои прошлые "графические движки", если они вообще таковыми являлись, работали со скоростью бешеной черепахи.
← →
@!!ex_ (2007-05-29 16:14) [1]Я пишу на OPenGL, но пишу 3Д.
Для вывода 2Д вполне хватает кэнваса.
Могу пример кинуть.
← →
Домик (2007-05-29 21:29) [2]> желательно без DirectX?
Думаю, что быструю графику хорошего качества с различными современными спецэффектами (пусть даже и 2д) без участия DirectX или OpenGL вряд ли получится получить. Но можно попробовать GDI (или GDI+?).
> Для вывода 2Д вполне хватает кэнваса.
Только в том случае если ты собираешься выводить графики, или примитивную графику аля прототип игры. Для графики полноценной игры, возможностей канваса не хватит :)
← →
homm © (2007-05-29 21:37) [3]> [2] Домик
Вот GDI+ как раз использовать не нужно, ничего хорошего не выйдет плане производительности.
Лучше на основе какого-нибудь FastDIB млм подобных.
← →
@!!ex_ (2007-05-30 08:12) [4]> Только в том случае если ты собираешься выводить графики,
> или примитивную графику аля прототип игры. Для графики
> полноценной игры, возможностей канваса не хватит :)
Вполне хватает.
НАсыщенная сцена с нормальным разрешщением легко рисуется.
Конечно не стандартными средствами VCL.
> homm, как раз в этом лучше разбирается.
← →
Домик (2007-05-30 12:05) [5]> homm © (29.05.07 21:37) [3]
Да, я знаю. Я сразу написал, что без DirectX или OpenGL быструю и качественную графику не сделать. Но если человеку очень хочеца без DrectX... Пусть пробует.
> НАсыщенная сцена с нормальным разрешщением легко рисуется.
Я бы не рискнул делать игру, основывая её графическую часть на канвасе :)
← →
@!!ex_ (2007-05-30 13:51) [6]> [5] Домик (30.05.07 12:05)
> > homm © (29.05.07 21:37) [3]
>
> Да, я знаю. Я сразу написал, что без DirectX или OpenGL
> быструю и качественную графику не сделать. Но если человеку
> очень хочеца без DrectX... Пусть пробует.
>
> > НАсыщенная сцена с нормальным разрешщением легко рисуется.
>
> Я бы не рискнул делать игру, основывая её графическую часть
> на канвасе :)
Возможно мы под Канвасом подразумеваем разные вещи. Лично я под Канвасом подразумеваю ручной рендер основанный на стандартных средствах, без вмешательства DX и OGL. Такими средствами был в свое время написан Анрыл и много других хороших игр. ;)
← →
Sapersky (2007-05-30 20:29) [7]У GDI/софтвера, кроме скорости вывода, есть ещё такая проблема - отсутствие нормального механизма двойной буферизации с переключением страниц (page flipping) и синхронизации с вертикальной развёрткой. Во всяком случае автор SpriteUtils, который в этом направлении копал долго и упорно, в конечном итоге пришёл к использованию DirectDraw. Правда, у него игра была весьма специфичная, с быстрым скроллингом карты, а если скроллинга нет или он относительно неторопливый, то, наверное, сойдёт и BitBlt.
По скорости - да, если руки прямые, можно сделать быстро, но догнать и тем более перегнать OpenGL/Direct3D вряд ли получится (на нормальной машине, у которой мощность видеокарты пропорциональна мощности CPU и видеокарта, само собой, поддерживает 3D-ускорение).
Даже интегрированное видео как минимум не проигрывает CPU. Есть у меня тест на блендинг (полупрозрачность) - exe, 30 кб:
http://slil.ru/24440980
Видеокарта (именно интегрированная, i915) быстрее Cel 2.8 в 2-3 раза.
← →
@!!ex © (2007-05-30 20:36) [8]> По скорости - да, если руки прямые, можно сделать быстро,
> но догнать и тем более перегнать OpenGL/Direct3D вряд ли
> получится (на нормальной машине, у которой мощность видеокарты
> пропорциональна мощности CPU и видеокарта, само собой, поддерживает
> 3D-ускорение).
> Даже интегрированное видео как минимум не проигрывает CPU.
> Есть у меня тест на блендинг (полупрозрачность) - exe, 30
> кб:
Да никто не спорит.
Для этого и создавались эти АПИ, для этого и видеокарты постоянно обновляются.
← →
homm © (2007-05-30 22:18) [9]> Есть у меня тест на блендинг (полупрозрачность) - exe, 30 кб:
> http://slil.ru/24440980
Это что еще за троян? Зачем она в сеть просится?
← →
homm © (2007-05-30 22:53) [10]Кстати, нельзя ли гденить еще исходчег выложить? Охото глянуть, как там софтвере сделан.
← →
gray_falcon © (2007-05-31 00:13) [11]От слов к делу! Покажите или исходничек без DX, ну или даже с DX (как бы мне сейчас не хотелось его использовать).
И еще, я пока не разрабатываю игру графикой похлеще чем в Готике 3 или Думе 3, и с поддержки DirectX 10, поэтому мне особо не нужны на этом движке яркие спецэффекты.
Это не отрицание DX, просто хотел провести разминку перед тем как писать с помощью него
← →
Sapersky (2007-05-31 02:43) [12]Охото глянуть, как там софтвере сделан.
Additive - FastLIB"овский AddBlend.
Alpha - конвертированный под FastLIB MMXAlphaPut из SpriteUtils.
Кстати, с альфой довольно шустро работает функция GDI AlphaBlend, хотя, говорят, нестабильно в Win9x. Я тестировал на Win2000 - вроде всё нормально, скорость cопоставима с MMXAlphaPut, хотя AlphaBlend в некотором смысле "мухлюет" - использует premultiplied alpha, т.е. нужно заранее умножить на alpha пиксели исходной картинки.
От слов к делу! Покажите или исходничек без DX
Если по этому поводу:
http://delphimaster.net/view/8-1180354902/
то PixelFormat пробовал?
Я у себя проверял - действительно быстрее, но на разных ОС и драйверах оно может быть по-разному, поэтому выразился осторожно.
Теоретическая основа такая:
32 бита:
1) мелкософт умудряется писать жутко кривой код для обработки 24-битных картинок (притом что именно этот формат до XP включительно является стандартом). Проверено также со StretchBlt, и не только мной - 32-битные битмапы значительно быстрее.
2) на некоторых картах копирование на экран быстрее если формат битмапа = формату рабочего стола, а обычно стоит именно 32 бита.
pfDevice:
при выводе таких битмапов может использоваться (и обычно используется на NT-семействе, хотя зависит от драйвера) аппаратное ускорение, но только для простых операций вроде BitBlt и TransparentBlt (StretchBlt не ускоряется). Доступ к пикселям (Pixels, Scanlines) такого битмапа получить нельзя, точнее можно, но очень медленно.
Если так уж надо исходничек примера с блендингом - завтра, может быть... то есть, гм, сегодня, но днём.
← →
cyborg © (2007-05-31 09:35) [13]> [11] gray_falcon © (31.05.07 00:13)
Попробуй http://miniforum.ru/show.php?&forum=8&theme=136
Там используется директ икс, но с ним ты не будешь иметь дело напрямую.
← →
XProger © (2007-05-31 11:33) [14]http://timeforkill.mirgames.ru/img/scr/5.jpg - OpenGL
Мне страшно представить сколько нужно угрохать сил и нервов, чтобы заставить даже это работать на GDI... про FPS я, как человек культурный, промолчу )
← →
gray_falcon © (2007-05-31 20:44) [15]
> PixelFormat пробовал?
еще как пробовал. Все идет ОК, теперь е*... мучаюсь со способами хранения групп изображений для последующего вывода.
А вообще я взял себе за образец движок игры "Alien Shooter" (играл кто-нибудь? Он мне больше нравится чем некоторые 3D шутеры). По моему это хороший ориентир. Ну дак вот там изображения хранятся в файлах *.vid и выводятся один за одним в зависимости от угла поворота. Щас разрабатываю эту структуру хранения различных видов объекта.
← →
XProger © (2007-05-31 21:13) [16]gray_falcon, ядро у Alien Shooter основано на DirectX. И даже такой скорости тебе никакой GDI движок не даст )
← →
@!!ex © (2007-05-31 21:15) [17]Хм. Я навино полгалал, что Алиен Шутер - смесь 3Д и 2Д. Я ошибался? :)) Надо будет на dtf спросить.
← →
Yashin © (2007-05-31 21:50) [18]сейчас вышел Alien Shooter полный 3D !
← →
homm © (2007-06-01 09:14) [19]> И даже такой скорости тебе никакой GDI движок не даст )
Что значит «И даже такой» ? :) Он у меня 300-500 fps выдет :)
← →
Домик (2007-06-01 13:20) [20]> сейчас вышел Alien Shooter полный 3D !
Если имеется в виду Alien Shooter 2, то спешу вас огорчить, там все 2D.
← →
XProger © (2007-06-01 19:19) [21]homm, сомневаюсь что твой GDI движок способен выводить столько контента с достойной скоростью на таком разрешении.
← →
@!!ex © (2007-06-01 20:12) [22]> XProger © (01.06.07 19:19)
Не, никто не спорит, что CPU+GPU быстрее, чем CPU. Но все же ИМХО не стоит сбрасывать все это сосчетов.
← →
homm © (2007-06-01 21:16) [23]> homm, сомневаюсь что твой GDI движок способен выводить столько
> контента с достойной скоростью на таком разрешении.
Да я спорю что-ли :), я про то что Alien Shooter выдает фэпээсов совсем не «и даже» :))
← →
homm © (2007-06-01 22:31) [24]Кстати, 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
← →
XProger © (2007-06-01 23:08) [25]homm, а можешь это сделать разноцветными квадратами с нормальным циклом отрисовки расчитывающим РЕАЛЬНЫЙ фпс в зависимости от кол-ва отрисованных кадров за последнюю секунду? За реализацию на OpenGL в таком случае - возьмусь.
← →
homm © (2007-06-02 00:04) [26]Обновил архив. Так и не понял, зачем имеено «разноцветными квадратами», но добавил и патернов, выбирай какой нравиться бльше :)
← →
XProger © (2007-06-02 02:39) [27]Меряться так меряться...
http://xproger.mirgames.ru/tmp/test.rar - даёт 860 FPS против твоих 260 :)
твой ход...
← →
Vga © (2007-06-02 07:37) [28]~1200FPS на демке homm, ~1000FPS на демке XProger :)
← →
homm © (2007-06-02 09:48) [29]Да уж, похоже вера в аппаратное ускорение вернулась :))
У меня 1500 получилось, в 3 раза больше :)
> ~1200FPS на демке homm, ~1000FPS на демке XProger :)
Что еше можно было ожидать от VGA ;) Наверное коре 2 дури и видео встроенное.
← →
@!!ex © (2007-06-02 10:24) [30]170 против 340.
Правда стоит заметить что запускалось все при напрочь загруженном проце и пустой карте...
> [29] homm © (02.06.07 09:48)
Еще раз убеждаемся, что все зависит только от оборудования.
← →
Vga © (2007-06-02 10:41) [31]Core 2 Duo E6300, ATI Radeon X1950Pro - мягко говоря не чета встроенному.
← →
homm © (2007-06-02 10:56) [32]> [31] Vga
тогда не знаю, почему Прогеровская демка так «тормозила» :) У меня 7600GT, как уже говорил 1500fps.
← →
Vga © (2007-06-02 10:59) [33]Одна из причин - на АТИ под винду опенгл сделан через жопу, увы. На маках говорят дрова лучше, но то маки и там дырекса нету
← →
gray_falcon © (2007-06-02 14:43) [34]Объясните мне, или я че не допонял, мне зачем выводить изображение 1000 раз в секунду, когда у меня CRT с частотой обновления экрана в 100 Гц. Мне вполне этой 100 хватит, такую частоту 2D движок на канвасе точно потянет.
← →
homm © (2007-06-02 15:10) [35]> Объясните мне, или я че не допонял, мне зачем выводить изображение 1000 раз в секунду
Нужно пытаться минимизировать время построения любого объекта. Представь группу разработчиков. Оди реализует HDR шейдеры, другой модели рисует, третий текстуры, четвертый картой занимаеться. Делают они каждый свое дело, у каждого по 80-100 кадров на тестовый сценах получаеться, а потом все это дело собирают и получаеться не более 20. Вроде-бы и так все шустро было, а игра получилась тормознутая.
← →
XProger © (2007-06-02 15:38) [36]gray_falcon, высокая скорость отрисовки - показатель скорости работы софта и железа. Больше частоты развёртки в играх естественно не нужна, но Canvas, так называемый, в тех же играх этого выдать не способен... стоит применить пару поворотов с блендингом (которые естестенно тебе придётся реализовывать самому вручную) и FPS упадёт до единиц.
← →
homm © (2007-06-02 16:55) [37]> [27] XProger © (02.06.07 02:39)
> твой ход...
Ну давай, попробую :))
http://homm86.narod.ru/files/test.rar
Правда это уже на основе твоей демы, но все равно, я еше 230 кадров из нее выжал :P
← →
XProger © (2007-06-02 18:17) [38]homm, а у меня почему-то проигрывает на 150 фпс... я так понимаю ты попытался выйграть на облегчении работы CPU...
В отрисовке здесь работает GPU, так что я спокойно могу крутить циклы до 100000 сложений в рендере и FPS даже не просядет )
← →
CloseGL (2007-06-02 18:23) [39]Ну не знаю как у вас, а у меня 1376 - 1378 FPS =)
← →
homm © (2007-06-02 18:26) [40]> а у меня почему-то проигрывает на 150 фпс...
«Этого не может быть, потому что этого не может быть» ©
Очень интересный результат. :) Я бы понял, если бы 8-й жифорс сравновали, там что-то говорили о переводе логики из режима работы с плавающей точкой в целочисленый, ито это для шейдеров, а так вообще не понятно.
Может кто еще попробует и скажет, какой вариант выдает сколько фэпээсов?
ЗЫ XProger, может что-нить в фоне работает, забыл отключить? У меня даже винамп с диспетчером задачь напару сотню попугаев съедают.
Страницы: 1 2 вся ветка
Форум: "Игры";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.055 c