VDV Опубликовано 17 мая, 2013 Поделиться Опубликовано 17 мая, 2013 Немного изменил исходный код под себяfloat fFps = 0; // переменная для основного ФПСfloat fLastTickCount = 0;// - переменная последнего отсчетаfloat fCurrentTickCount; // переменная не знаю как правильно объяснитьchar cFrameRate[50] = {NULL}; - убралchar *cFps() - сама функция{fCurrentTickCount = clock() * 0.001f;// время на компе * 0.001.++fFps; переменная ФПС +1if((fCurrentTickCount - fLastTickCount) > 1.0f){ fLastTickCount = fCurrentTickCount; FPSText(10, 120, SKYBLUE,dMenu.pFont, "%d",int(fFps)); // все парвильно выводит -НО значение мерцает постоянно, в чем проблема объясните пожалуйста //sprintf( cFrameRate, "Framerate: %d", int( fFps ) ); - убрал fFps = 0; }return cFrameRate;} Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 18 мая, 2013 Поделиться Опубликовано 18 мая, 2013 Да ну блин, сколько можно? В будущем подобные темы буду закрывать без предупреждения. Либо предоставляете МАКСИМУМ информации (как то - название и версия игры, и полностью код, в котором возникает ошибка, а также, при каких обстоятельствах), либо не получите НИКАКОЙ помощи! Ссылка на комментарий Поделиться на другие сайты Поделиться
VDV Опубликовано 18 мая, 2013 Автор Поделиться Опубликовано 18 мая, 2013 Да ну блин, сколько можно? В будущем подобные темы буду закрывать без предупреждения. Либо предоставляете МАКСИМУМ информации (как то - название и версия игры, и полностью код, в котором возникает ошибка, а также, при каких обстоятельствах), либо не получите НИКАКОЙ помощи!Причем сдесь название игры и версия???? Подсчет ФПС это общее - для всех игр подходит , поставить этот код на вормс3д или же на КС - одно и тоже , суть проблемы не в том , суть проблемы в коде ,а имееноFPSText(10, 120, SKYBLUE,dMenu.pFont, "%d",int(fFps));при выводе на экран значения ФПС.С помощью какой функции я вывожу значения на экран????void FPSText(int x, int y, D3DCOLOR col, LPD3DXFONT pFont, const char *pString2, ... ){ char buf[1024]; RECT FontRect = { x, y, x+800, y+50 };//500 30 va_list vaList; va_start(vaList, pString2); vsprintf_s(buf, pString2, vaList); va_end(vaList); pFont->DrawText( NULL, buf, -1, &FontRect, DT_LEFT | DT_WORDBREAK, col);}Игра фаркрай, какую еще инфу предоставить???? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 18 мая, 2013 Поделиться Опубликовано 18 мая, 2013 Мерцает, скорее всего, потому, что, судя по всему, используются функции GDI для вывода FPS. А игра использует DirectX. Отсюда и мерцание. Ссылка на комментарий Поделиться на другие сайты Поделиться
VDV Опубликовано 18 мая, 2013 Автор Поделиться Опубликовано 18 мая, 2013 Мерцает, скорее всего, потому, что, судя по всему, используются функции GDI для вывода FPS. А игра использует DirectX. Отсюда и мерцание.через директ Х вроде бы все рисую - там стандартный вывод былsprintf( cFrameRate, "Framerate: %d", int( fFps ) );я заменил на свойFPSText(10, 120, SKYBLUE,dMenu.pFont, "%d",int(fFps)); Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 20 мая, 2013 Поделиться Опубликовано 20 мая, 2013 через директ Х вроде бы все рисую - там стандартный вывод былsprintf( cFrameRate, "Framerate: %d", int( fFps ) );я заменил на свойFPSText(10, 120, SKYBLUE,dMenu.pFont, "%d",int(fFps));Очевидно же, что ты не рисуешь в перехваченной EndScene, отсюда и мерцание. Ссылка на комментарий Поделиться на другие сайты Поделиться
VDV Опубликовано 2 июня, 2013 Автор Поделиться Опубликовано 2 июня, 2013 Очевидно же, что ты не рисуешь в перехваченной EndScene, отсюда и мерцание.как исправить? Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 2 июня, 2013 Поделиться Опубликовано 2 июня, 2013 как исправить?Рисовать в EndScene Ссылка на комментарий Поделиться на другие сайты Поделиться
JuGGerNaunT Опубликовано 3 июня, 2013 Поделиться Опубликовано 3 июня, 2013 Проблема в том, что функцию FPSText() нужно не в if(){} вызывать, а постоянно. Ссылка на комментарий Поделиться на другие сайты Поделиться
VDV Опубликовано 3 июня, 2013 Автор Поделиться Опубликовано 3 июня, 2013 Проблема в том, что функцию FPSText() нужно не в if(){} вызывать, а постоянно.дак я всю функцию FPS в поток засунул Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 3 июня, 2013 Поделиться Опубликовано 3 июня, 2013 дак я всю функцию FPS в поток засунулА я шоколадку съел. И от этого рисоваться в EndScene не стало. Ссылка на комментарий Поделиться на другие сайты Поделиться
VDV Опубликовано 4 июня, 2013 Автор Поделиться Опубликовано 4 июня, 2013 А я шоколадку съел. И от этого рисоваться в EndScene не стало.ешь , ешь она для мозгов полезна , если что , арисую я в энд саин и все равно мерцает Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Dr_EyeBall_IT Опубликовано 4 июня, 2013 Поделиться Опубликовано 4 июня, 2013 А можно посмотреть кусок кода, в котором ты хукаешь EndScene? Ссылка на комментарий Поделиться на другие сайты Поделиться
VDV Опубликовано 27 июня, 2013 Автор Поделиться Опубликовано 27 июня, 2013 тему можно закрыть - написал свою собственную функцию подсчета ФПС,кому интересно код ниже:создаем переменные для подсчетаint FPScounter = 0;float FPSfLastTickCount = 0.0f;float FPSfCurrentTickCount = 0.0f;int timerFPS;создаем функцию войд в потоке желательно(она нечего не возвращает , просто считает ФПС), если вы не знаете что такое поток ,сделайте цикл "for"void FPS(){FPSfCurrentTickCount = clock() * 0.001f;FPScounter++;if((FPSfCurrentTickCount - FPSfLastTickCount) > 1.0f){FPSfLastTickCount = FPSfCurrentTickCount;timerFPS=FPScounter;FPScounter = 0;}PrintText2(1, 1, SKYBLUE,dMenu.pFont, "%d",timerFPS);//Выводим с помощью стандартной функции принт текст}не забываем подключать#include <time.h> - заголовочный файл содержащий типы и функции для работы с датой и временем.функция принт текст , спасибо отдельное Армандо за предоставленную функцию.void PrintText2(int x, int y, D3DCOLOR col, LPD3DXFONT pFont, const char *pString2, ... ) // тут вам нужно главное указать "где рисовать",в моем случае pFont.{ char buf[1024]; RECT FontRect = { x, y, x+800, y+50 };//500 30 va_list vaList; va_start(vaList, pString2); vsprintf_s(buf, pString2, vaList); va_end(vaList); pFont->DrawText( NULL, buf, -1, &FontRect, DT_LEFT | DT_WORDBREAK, col);} Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения