|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.08.2008, 02:32 | #1 |
Пользователь
Регистрация: 03.08.2008
Сообщений: 43
|
Можно ли подсчитать FPS в другом процессе?
В общем идея такая - подсчитать частоту обновления экрана (FPS) какой нибудь игры. Но есть маленькая проблемка - я не имею ни малейшего представления как это реализовать. Может кто нибудь делал нечто подобное? Или знает как это можно провернуть?
бороться и искать
найти и перепрятать. Последний раз редактировалось Minimus; 08.08.2008 в 04:13. |
08.08.2008, 11:35 | #2 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,592
|
Что-то мне подсказывает, что такое не возможно. FPS может подсчитать только сама программа, т.к. способ подсчета зависит от метода вывода изображения.
E-Mail: arigato.freelance@gmail.com
|
08.08.2008, 16:04 | #3 |
Пользователь
Регистрация: 03.08.2008
Сообщений: 43
|
Да...Короче полная безнадега?
Хотя я и не сомневался, что это невозможно. Ну, точнее говоря, - невозможно прямым путем........ Ну а если перехватывать моменты, когда DDraw переключает видеобуферы? Это можно как-нибудь сделать? И есть ли смысл в этом подсчете? То есть, в принципе, частота переключения должна быть равна частоте нарисованных кадров? Вопросы....Вопросы....Одни вопросы!
бороться и искать
найти и перепрятать. Последний раз редактировалось Minimus; 08.08.2008 в 17:05. |
09.08.2008, 08:26 | #4 |
Пользователь
Регистрация: 03.08.2008
Сообщений: 43
|
В принципе ясно, что задача решается посредством загрузки своей DLL в адресное пространство исследуемого процесса. Ну и затем, к примеру, SendMessage-ми можно производить обмен данными между этой DLL и екзешником моей программы. Здесь вроде бы все ясно.
Неясно только как эта самая DLL может получать эту информацию. Хм.. Уважаемый Arigato, а не могли бы вы поподробнее обяснить мне фразу (Возможно разгадка где-то рядом).
бороться и искать
найти и перепрятать. Последний раз редактировалось Minimus; 09.08.2008 в 08:47. |
09.08.2008, 11:36 | #5 | |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,592
|
Цитата:
Например, 2Д игра, где на фоне отрисовываются некие объекты, фон неподвижен. Тут количество FPS - это сколько раз за секунду удается перерисовать все объекты. Но игра может перерисовывать не все объекты каждый раз, а только те, что поменяли свое состояние. Это пример, что бы понять, что FPS - это количество кадров в секунду, но что такое 1 кадр определяется самой программой, занимающейся отрисовкой. Не силен в DirectX, возможно, можно перехватывать моменты сброса буфера на экран и это считать 1 кадром. Может что-то аналогичное можно делать и в случае с OpenGL. Если же используется GDI, то здесь можно пытаться (как, не знаю) так же определять сброс буфера на экран. E-Mail: arigato.freelance@gmail.com
|
|
09.08.2008, 17:48 | #6 | |
Пользователь
Регистрация: 03.08.2008
Сообщений: 43
|
Спасибо, Arigato.
Цитата:
Любая серьезная игра или программа рендеринга сначала должна рисовать в задний буфер. А затем буфера переключаются. Иначе будет сильное мерцание экрана => либо GL либо DX производит переключение буферов по требованию программы. И подсчитав это количество переключений я найду количество нарисованных кадров. Следовательно: GDI - баловство все это. Даже не буду тратить времени. Для GL нужно просто перехватить функцию wglSwapBuffers и подсчитывать количество ее вызовов. Задача, можно сказать, тривиальная. Ну а что делать с DX? С этим, простите за выражение, ком-обьектом? Если у кого есть идеи - черканите - не стесняйтесь!
бороться и искать
найти и перепрятать. Последний раз редактировалось Minimus; 09.08.2008 в 18:28. |
|
22.08.2008, 18:50 | #7 |
Пользователь
Регистрация: 18.01.2008
Сообщений: 16
|
Перехват методов COM интерфейсов – 1
Перехват методов COM интерфейсов – 2 Еще на форуме www.wasm.ru обсуждался этот вопрос неоднократно Последний раз редактировалось LDA; 22.08.2008 в 18:59. |
26.08.2008, 02:08 | #8 |
Пользователь
Регистрация: 03.08.2008
Сообщений: 43
|
Огромное спасибо. Будем разбираться.
бороться и искать
найти и перепрятать. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
PageControl. в процессе проектировки формы создать несколько вкладок. | GN_ | Помощь студентам | 7 | 15.11.2011 20:56 |
Блокировка функции в процессе ее работы | Andr180nag | JavaScript, Ajax | 2 | 11.08.2008 18:07 |
Подсчитать сумму! | Deman4eg | Microsoft Office Excel | 2 | 02.04.2008 09:16 |
Можно ли в ListBox шрифт в одном Item сделать жирным, а в другом обычным? | Washington | Компоненты Delphi | 9 | 28.03.2007 12:43 |
Как программно нажать клавишу в чужом процессе? | Sere0ga | Win Api | 2 | 27.03.2007 18:43 |