![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#41 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Давайте конкретно определимся:
1) У нас 2D; 2) Игра не сетевая по заданию топикстартера; 3) Узкое звено - GDI; 4) FPS - побочный продукт, важна загрузка CPU! Это софтвар братья прогеры! ...влепить рендер (вывод GDI на экран) в repeat, чтобы смотреть избыточный FPS - глупо, сожрет нафиг все ресурсы. Посему, нужно смотреть по загрузке CPU сколько раз в секунду код успевает провернуться без тормозов. Имеет место регулирование загрузки интервалом таймера, это нормально! Ulex, еще раз позволю себе уточнить, ...когда математическая модель игрового пространства живет "своей жизнью", отдельно от рендера в 2D, где анимация уже раскадрована и имеет строгое количество кадров в секунду рендерить два или более раз один и тот же статичный кадр - нецелесообразный расход ресурсов! ...когда хоть что-то изменится, т.е. какой-либо объект сменит свой кадр анимации, только тогда нужно рендерить этот изменившийся кадр, частично или как у меня перерисовать все полностью, поскольку могут сменить кадры все объекты одновременно, собственно, деревья всегда меняют кадры и все объекты постоянно шевелятся. Ну, понятно наконец, почему математическая модель должна быть жестко связана с рендерингом ? ![]() В однопользовательском приложении, если вдруг комп задумается, хоть в софтваре, хоть видеокарта не справится с выводом и затянет рендер, ни в коем случае не допустимо видеть слайд-шоу событий, видеть начало атаки объекта, а через секунды две свой труп, ...если таймер общий, ТО! ...это будет все равно что кнопка ПАУЗА на пульте DVD! ...андерстенд! ![]() Задача - устроить вывод графики как можно быстрее, именно графики, ...а математическая модель считается быстро, в некоторых пределах. Вот я переправил свой пример. Связал подсчет времени на весь внутренний код с интервалом, вот так: Код:
Код:
НО! ...MMX по 8 байт не сработал, только по 4, ...не понимаю почему, когда ставлю по 8 байт появляются вертикальные полосы в цветах радуги, изображение есть, но через фильтр такой, ...я просто сменил xmm регистры на mm, и не вышло, очистка emms везде есть, ...поставил по 4 байта пока, до выяснения причин, ...хочется чтобы "старички" запустились.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#42 |
Форумчанин
Регистрация: 15.06.2010
Сообщений: 740
|
![]()
Небольшой оффтоп, но в то же время и по теме.
Я сейчас путем долгих мук и хитрых комбинаций таки собрал Bochs из исходников для эмуляции 586 (Pentium MMX), сейчас на него ставиться WinXP. Потом можно будет тестировать на нем запуск/не запуск программы. Beermonza Давайте помогу в переводе на чистый MMX и SSE процедур? Конечно было бы идеально видеть весь код, чтобы самому тестировать сразу, но можно как-то исхитриться и создать новую программу, которая использует вышеприведенную функцию рисуя просто 3 изображения на форме статично...
Чтобы понять рекурсию, сперва нужно понять рекурсию.
|
![]() |
![]() |
![]() |
#43 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Tronix, спасибо за предложение, ...конечно же не откажусь от помощи, тем более, что пока проблему не решил. Исходник визуализатора во вложении, там же и pas-файл модуля работы с PNG-файлами.
Меня смущает еще цикл по-yy, сделал на скорую руку, так и не избавился, ...хочется всю отрисовку и по-X и по-Y пустить в asm-код.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#44 | ||
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
![]() Цитата:
Я пример теста привёл чтобы показать, что если тест завязан с регулировкой FPS и периодом таймера, то связь должна быть однозначная и расхождение в реально получившемся FPS и установленным по таймеру сразу мне скажут, что программа лагает. А сейчас непонятно как оценивать. Например на P4-2D при 1000 объектов загрузка 50% - это предел, т.к. тут два ядра, что это значит, значит программа начала тормозить, FPS же не соответствует установленному. Да нет, он же и раньше не соответствовал, да и вообще не обязан соответствовать. Ладно, в последнем тесте хоть реальные тайминги видно. По ним можно сориентироваться, что таймер не успевает. Ну это если знать, что успевать он должен за 33 мс, а не за то 20, как стоит в настройках. В топку TTimer и SetTime. Бери уже нормальные таймеры - вот я к чему и пишу уже всё это в третий раз и пример выложил. Цитата:
Предыдущий свой пост я написал в большей степени для ZotaC_а (про него мы забыли совсем). Он же не пишет на GDI. Сторонник DX и OGL - он будет вынужден наступить на эти грабли. Когда на одинаковых мощных машинах он будет наблюдать разную по скорости картину рендера. Ну, понятно наконец, почему математическая модель не должна быть жестко связана с рендерингом ? ![]()
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
||
![]() |
![]() |
![]() |
#45 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Ulex, ту, ...тить, 2D у нас, у топикстартера 2D, ...два дэ-э-э-э!
![]() ![]() Сказать что будет, если рентер на своем таймере, а математическая модель не своем? ...синхронизировать не удается, оно постоянно дергает изображение, попасть в такт невозможно, ...приходится существенно задирать такт рендеринга, от этого растет нагрузка на CPU, оно нам надо? ...рационально поступать нужно. То, что ты поставил 1000 объектов и оно начало тормозить говорит о том, что есть какой-то предел, и он появляется на 1000 объектах, ...вспоминаем, какая игра 2D может похвастаться таким содержанием кадра? ...задача - выполнить код отрисовки как можно быстрее, чтобы он смог больше выдать объектов, а GDI так и останется со своим прерыванием 30 кадров, оно не тянет больше, это OC! ![]() От использования таймера только плюс, ...он оттягивает время, не давая влететь в исключение, если код внутри него не успел выполниться. Я неоднократно уже описывал ситуацию, ...все твердили вокруг "используй точный таймер", и что? ...использовал, ...когда объектов стало много, программа просто повисла и всего делов, ...не мудрствуя лукаво можно, не опасаясь проблем, пользоваться TTimer'ом, который как раз показывает на сколько тормозной у вас код. Что плохого в том, что на старом компе игра иногда будет замедляться, а не показывать вашу атаку и следом труп? ...бутылку успеваем хлебнуть с хелспоинтами? ...в моем случае успеваем. Вспоминаем даже приставки 8-битные, ...когда много объектов она притормаживает, и таймер общий, и это 2D, и если файтинг на Сеге Мегадрайв, Мортал Комбат, например, ...аналогичная картина, ...что в этом плохого? Хочется наблюдать FPS ? ...так и создавайте 3D, это будет хоть не глупо, а в 2D кадрами заведует математическая модель, она сменяет состояние, указывает тип анимации, считает кадры, переключает кадры в начало если насчитала предел, ...смена кадра - сигнал на рендер, а т.к. объектов много и все они меняют кадр по такту математической модели, то смысла держать на рентер отдельный таймер нет совсем. Что будет если по таймеру рендера идет отставание? ...графика будет икать, показывая дискретные события. Что в этом случае нужно делать? ...тормозить таймер математической модели? ...нет? ...оставить как есть? Что такое "бонус замедления" ? ...это когда таймер математической модели остается прежним и никогда не меняется, а в тактирование кадра конкретного объекта вводится счет задержки, ...у себя я это уже предусмотрел. Что такое "ускорение" ? ...это когда анимация меняется, скажем, с "шага" на "бег", это разные наборы (анатомию понимаете, разные движения совершенно), при этом пиксельное смещение увеличивается, НО! показатель КАДРЫ В СЕКУНДУ остается! Задача сводится к тому, чтобы выбрать интервал таймера, который соответствует динамике игры, и не более 30 мс, ...это GDI, быстрее не будет. А гипотетически, если без вывода на экран, только рисование кадра, то там и 500 и 1000 fps показывает, которые падают с ростом числа объектов, ...в них смысла ноль. ![]() ...и, да, ...еще раз уточню, в последнем примере не MMX, вернее он, но не по 8 байт, а по 4, пока не понятно почему не работает по 8, надеюсь поможет Tronix, ...и там количество объектов еще увеличится, нагрузка на CPU падет, на тех же 30 кадрах.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 18.10.2010 в 18:46. |
![]() |
![]() |
![]() |
#46 |
Форумчанин
Регистрация: 15.06.2010
Сообщений: 740
|
![]()
Конечно попробую помочь, но сегодня целый день возился с распозновалкой штрих-кодов там из раздела фриланс, вот только сейчас запилил наконец чтобы работало на любых фотках. А с MMX наверное завтра уже займусь, сегодня уже башка не варит...
Чтобы понять рекурсию, сперва нужно понять рекурсию.
|
![]() |
![]() |
![]() |
#47 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Хорошо, Tronix, как сможешь, ...спасибо.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#48 | |||
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
![]() Цитата:
Цитата:
Цитата:
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru Последний раз редактировалось Ulex; 18.10.2010 в 19:24. |
|||
![]() |
![]() |
![]() |
#49 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Ulex, поставь 1 мс интервал, и увидишь, что код выполняется в этом режиме (весь код со всеми пирогами и тормозами системы) за 16 мс, может и быстрее, 58 fps, но видны дерганья, это такт ОС, он рисует по своему обновлению и применяет Repaint, я долго разбирался с этим, но бросил, плавности можно достичь, если следовать обновлению ОС, а раз для 2D более и не нужно, то это огромный плюс в экономии ресурсов. Знаю, дело в таймере, ...но 16 мс остается только до момента, у меня, 500 объектов, по загрузке CPU 50%, ...это показатель скорости кода рисования в ОЗУ и однократного вывода BitBlt, и 16 мс забирает таймер на свою работу. Слышу, как в ноуте молотит вентилятор, ...ставлю интервал 17 мс, он замолкает, 30% CPU, т.е. я поставил столько, сколько требуется ему на выполнение, и машина начинает экономить ресурсы. Вот и нужно добиваться скорости внутреннего кода, не захламлять ненужными вычислениями, тогда будет хорошо.
В чем плюсы? ...первое - таймер не дает перегрузить систему, ограничивая отрисовку снизу, второе - дает возможность выставить FPS, ...вспоминаем, в Quake III тоже есть установка, ...но это сетевая вещь, там дискретность, ...а ресурс это экономит серьезно! Просто в современном мире испокон веков варварские методы использования ресурсов, чего не коснись, ...а вот только считай на днях, во временных рамках истории, человек задумался об экономии. Это касается и игр. Кстати, в твоем примере выдает 33 fps, это так и должно быть? ...а если побольше объектов и если каждый такт перекидывается подложка на весь кадр, ...статические крупные объекты как у меня, чтобы с прозрачностью, ...а? ![]()
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 18.10.2010 в 20:35. |
![]() |
![]() |
![]() |
#50 | ||
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
![]() Цитата:
Цитата:
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
||
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
wi-fi и скорость | stenl1 | Компьютерное железо | 19 | 01.06.2010 17:48 |
Скорость рисования графиков | Master07 | Общие вопросы C/C++ | 3 | 16.07.2009 21:45 |
Скорость | bakanis | Работа с сетью в Delphi | 6 | 05.04.2009 12:39 |
Скорость скачивания | Терминатор | Свободное общение | 3 | 30.03.2009 19:03 |
Скорость проигрывания | Bigtyoma | Мультимедиа в Delphi | 0 | 30.09.2008 15:57 |