![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#51 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
WM_PAINT сработает сам, когда ОС поймет, что окно изменило свое положение или параметры, будет перерисовывать все полностью с новыми параметрами. Что происходит если в нее опустить вывод именно твоего кадра, я не в курсе, у меня раньше эта процедура то таймеру срабатывала, ...сказать сложно было лучше или нет, ...требования были другие.
Сейчас приходится отправлять битмап по контексту в форму, но нет доступа к самому битмапу формы, чтобы рисовать в форму сразу в ОЗУ и давать команду обновления, типа Update. Так вроде исключается звено Битмап -> Битмап формы. На счет отсутствия прозрачности, ...ох и фигачит код на asm'е, я пробовал без прозрачности, сколько бы не ставил интервал, даже 1 мс, загрузки CPU вообще не наблюдал, 1%, ...вот так вот, ...а когда большой буфер и все полного качества RGBA и крупное, тут нужно стараться снизить нагрузку. По большому счету, тесту подлежит только рисование в ОЗУ, а оно очень быстрое )).
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#52 |
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
![]()
Да покажите же мне уже тот код, который по таймеру 1мс (fps=1000) фигачит с загрузкой 1%. Чёрт с ней даже с полупрозрачностью. Обычный SetDIBits такой области по таймеру 30 мс (нашему любимому) грузит мою систему на 2%. Значит на такой же одноголовой будет ~4, на том самом Celerone, который в три раза слабее (по тактовой частоте ядра) теоретически может быть 12. Однако в Celerone - слабое место не процессор, а ОЗУ (то самое, которое быстрое). Но это мы ещё ничего не нарисовали. А по таймеру в 1 мс на голом BitBlt повесился и четвёртый пень.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
![]() |
![]() |
![]() |
#53 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Я не могу отключить полупрозрачность, оно заложено в asm-код, это переделывать все, полностью. Пока MMX не заработает, следующего примера не будет. А там я сделаю отключение BitBlt. Но, считать FPS без вывода - некорректно, ...как и просто прерывать вывод если не успевает отрисоваться. Вот я у тебя в примере поставил 100 колобков, таймер 1 мс, а изображение мерцает и глотает кадры, т.е. сначала колобок тут, ик, и в другом месте, ...а показывает 140 fps - это некорректное значение, ...интересует, сколько честных кадров отрисованных по команде математической модели успевает появиться на экране. И я тебе скажу, ...проделал следующий опыт, просто сделал смещение персонажей у себя изменяемым, ...ввел 10 и увидел тоже самое, что у тебя с таймером 1 мс, только у меня 20 мс на таймере и не мерцает ни разу. Т.е. тактирование идет 20 мс, а персонажи носятся как в дискретном режиме, когда не успевает отрисоваться кадр у тебя. То же самое будет, если я отделю отрисовку и поставлю таймер на математическую модель в 1 мс, а смещение оставлю 1, ...я буду видеть дискретные события игры, ...это не fps! ...не знаю, стоит наверное считать время выполнения кода, который включает в себя только отрисовку в ОЗУ.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#54 | ||
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
![]()
Это абсолютно честный показатель. 140fps - значит GDI успела отрисовать эти 100 колобков 140 раз за секунду, а поставили ей 1000. Это и есть чистый показатель производительности графики. Без каких то там таймеров, которые чего то там оттягивают.
Цитата:
Цитата:
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
||
![]() |
![]() |
![]() |
#55 | ||
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]() Цитата:
Цитата:
Это софтвар, ох и получат "старички" чувствую с "правильным FPS", это же не запустить больше ничего, только игра и все. Ой, не знаю, ...как еще призвать к экономии ресурсов.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
||
![]() |
![]() |
![]() |
#56 | |
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
![]() Цитата:
Beermonza, это тест, именно поэтому здесь допустимо ставить интервал в 1 мс. Но заметь, я могу поставить 1 мс и посмотреть (потестировать), а ты - нет. Потому что таймер в твоём тесте, который я установил на 20 мс, считает, что он умнее меня и работает на 33. И, кстати, при моём способе построения изображения, когда первичен игровой таймер, никто не мешает разработчику экономить. Потому что в таймере ничего не рисуется, в таймере даётся команда на отрисовку (WM_PAINT). И если логика программы считает, что кадр, расчёты для которого она провела, является дублем предыдущего, она может не давать команду на отрисовку. Логика командует графикой, поэтому она крутит ей как хочет (как хочет разработчик). И ещё раз (в третий). Если игра не обеспечивает динамику на каких то машинах, то да, надо об этом писать на коробке. Пользователь платит за то, чтобы поиграть в полноценную игру. А твой метод, который на слабой машине начнёт тянуть кота за хвост - это всё равно что смотреть кино на скорости в 1/2. Да, вроде и понятно всё, ничего не пропустил, но как то устал за четыре часа наблюдения за гнусавыми даунами. Добавлено: Поправочка - установить 1 мс и я на самом деле не могу. Чуть переписал тест, вобщем на такой скорости уже даже логика не успевает отработать, поэтому даже мультимедийный таймер начинает тянуть интервал. Если отключаю обработку столкновения объектов, то игровой таймер таки срабатывает 1000 раз в секунду. А вот если включить, то только 480-500. Т.е. 2-3 мс меньше ставить смысла и для этого таймера нет. Ещё больше захотел увидеть чудо, которое шпарит 1000 fps с 1%-ой загрузкой ![]()
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru Последний раз редактировалось Ulex; 19.10.2010 в 02:10. |
|
![]() |
![]() |
![]() |
#57 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Ну, вот видишь, поправочка появляется. Какой смысл считать в торте дохлых мух, если они все равно несъедобные? ...давай откинем их. Оттяжка все равно рано или поздно произойдет, даже если на "старичке" сработает более приоритетный системный поток, игра подвиснет и продолжит свою работу с того же места, ...что у меня уже выполнено, только со 100% гарантией, ...а у тебя не факт, может подвиснуть только вывод на экран, получим "ик", я пока не видел как это реализовано.
Вот ситуация: играл играл, бац проблемы, что-то решил ОС поработать у себя, винтом поскреб, занял ОЗУ, выставил приоритет себе. В это время у тебя серьезный бой, ...ап! подвисло, и тут уже труп лежит твоего персонажа, и не понятно что было, как босс тебя шмякнул, чего применил, ...а сохранение далеконько от этого момента, ...упс! как неловко ![]() С простейшим таймером обстоит так: он работает сразу на выбранном режиме "по-умолчанию", ...рулить уже не приходится, анимации выше 30 кадров нет в природе, есть кривые руки создателей, которые думают "чем быстрее, тем реалистичнее", ...на самом деле нужно уложиться в 24 кадра и выполнить размазывание сразу в рендере набора анимации. Глаз человека не сразу "отпускает" изображение, достаточно посмотреть на клавиатуру и тут же резко закрыть глаза, в "памяти" остается картинка на 100 мс примерно, ...вот и смысла задирать такт и вывод на экран нет совсем. Зрительный эффект - раздражение биологических сенсоров, чтобы совсем не чувствовать мерцания, достаточно 24-30 кадров в секунду в анимации (смены кадров движения, ...не путать с частотой обновления монитора). Если придерживаться этого показателя и выполнять анимацию как положено, то ощущение реальности обеспечено, и для это FPS не нужен никак. Опять подходим к тому, что "по-умолчанию" для тебя 30 мс точных и 20 мс по TTimer'у устраивает вполне, так и говоришь "я всегда ставлю 20", ну, а я ставлю 31, ...и мне пофиг точно это или не точно, создаю игру чтобы играть а не смотреть FPS и как она жрет ресурсы, выкидывает кадры или молотит, ...что там еще проверять нужно, сработало/не сработало, проверять дубль, ...т.е. щепетильно относимся к игре в широком месте и грубо косячим в узком, тенденция, ...а потом многочисленные моды и обновления (за деньги), маркетинг ![]() Если нужно посмотреть прям невтерпеж, я могу кинуть версию для SSE, только там корректно цвет выводится по 8 байт за такт если. И опять же, как ты мне поверишь, что считает время правильно? ...кинуть счетчик в начало и в конец отрисовки в ОЗУ поймать значение, показать? Опиши "правильный" с твоей точки зрения, точный подсчет и я тебе специально создам тест.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#58 | ||
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
![]()
Если честно, то я уже тоже устал от этой темы. Уже давно всем всё понятно, и понятно, что все останутся при своих. Меня только напрягает, что я по десять раз одно и то же пишу.
Beermonza, ну ты представляешь, что такое интервал 1 мс? Не та 1 мс, которую ты как бы установил в своём "хорошем" таймере, а реальная 1 мс. Ещё с учетом того, что винда - это не система реального времени. Да появилась поправочка, когда я в сцену ввёл 10000 объектов, таймер не успевает за этот интервал уже даже логику обработать. Но опять повторюсь - это тест, поэтому здесь можно ставить всё что угодно и куда угодно. Он специально сделан для того, чтобы смотреть как и что влияет на производительность. Если тебя не устраивает такой подход к тестированию, то убирай этот параметр к чертям (будем оценивать исключительно по загрузке CPU), либо приводи таблицу соответствия твоего таймера реальным таймингам, потому что я не знаю, чему он там кратен, толи 15, толи 16 мс. Я не знаю, я разве где то возражал, что в игре FPS должна быть не равна 30, или должна быть больше 30? Или должна быть 1000 равна? Не было такого. Это ты сам установил в тесте 1 мс и начал возмущаться, дескать почему тест кадры глотает. А что ему делать, если ты хочешь с него поиметь 1000 кадров в сек. Прогнуться под твоё глупое требование, просадить логику до скорости графики и радостно сообщить, что fps=140? Ну ты понял мою точку зрения, я так делать не буду. Вообще я как бы тоже сторонник экономии. Но я непонимаю, с чего ты решил, что мой метод как то противоречит принципу экономии ресурсов? Хочешь 30 мс, ставь 30. Я уже говорил, на 30 мс я вижу графический курсор (именно как он дёргается). Или если тест позволяет поставить 1 мс, то надо обязательно её поставить и почему то при этом считать, что и в игре разработчик тоже обязан ставить 1 мс? Я не вижу взаимосвязи между тестом графики, и каким то законченным (или находящемся в процессе) реальном проекте. В тесте нет места экономии. Тест обязан уметь быть расточительным. Иначе ты ничего не протестируешь. Цитата:
Цитата:
![]() P.S. Для поржать: Зато я могу вот так, а вам, слабо ![]()
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru Последний раз редактировалось Ulex; 19.10.2010 в 18:26. |
||
![]() |
![]() |
![]() |
#59 | |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Ulex, я не уставал от темы, ...а разве можно устать от дружественного диалога на хорошую тему, касательно экономии ресурсов?
![]() У меня, например, на компах нет winmm.dll, ...это так принято всеми играми пихать в нерезиновую system32 свои потроха? ...разумеется, потом оставляя их навсегда, хоть по каталогам, хоть в реестре. Цитата:
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|
![]() |
![]() |
![]() |
#60 | ||||
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
![]() Цитата:
Цитата:
Ну и про экономию, вот ты про экономию ресурсов говоришь. Но почему то под экономией ресурсов подразумеваешь только загрузку процессора. А когда я сказал про видеокарту (DX и OGL), то ты как то так возразил интересно - дескать у меня в игре графических данных на 100+ мегабайт, и в видеопамять они просто не влезут. Я чёт сначала внимания этому не придал, ну да, действительно - не влезут. А ты полагаешь, что в ОЗУ на таких конфигурациях они влезут? Вот у меня на этом компе 256М ОЗУ. Сколько то отъедает система, сколько-то другие программы, в системе стоит DrWeb (который любит оптимизировать систему под себя). И чего остаётся игре. Да по всей видимости ничего. Подключается файл подкачки. Если он подключится, то будет вообще Fail. Что там, ATA-33 ? Может быть имеет смысл оптимизировать не скорость, потому что видеоадаптер на таких конфигурациях - это не самое слабое звено и выдаст тебе твои 30 кадров в секунду, только на ура. Главное, чтобы требуемые поверхности были уже загружены в видеопамять. Ну вот для формирования конечного кадра, тебе же ведь не нужны все 100 Мб графических данных, нужна только их какая-то часть. Вот - простор для оптимизации. Просто когда разработчик берёт DX или OGL он почему то сразу считает, что тут оптимизировать нечего, карта всё сделает сама. Цитата:
Цитата:
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками 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 |