mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-22 00:32:10 +01:00
77 lines
1.6 KiB
C
77 lines
1.6 KiB
C
|
|
#include <windows.h>
|
|
#include <stdio.h>
|
|
#include "main.h"
|
|
#include "surface.h"
|
|
|
|
double DebugFrameTime = 0;
|
|
DWORD DebugFrameCount = 0;
|
|
|
|
static LONGLONG CounterStartTime = 0;
|
|
static double CounterFreq = 0.0;
|
|
|
|
void CounterStart()
|
|
{
|
|
LARGE_INTEGER li;
|
|
QueryPerformanceFrequency(&li);
|
|
CounterFreq = (double)(li.QuadPart) / 1000.0;
|
|
QueryPerformanceCounter(&li);
|
|
CounterStartTime = li.QuadPart;
|
|
}
|
|
|
|
double CounterStop()
|
|
{
|
|
LARGE_INTEGER li;
|
|
QueryPerformanceCounter(&li);
|
|
return (double)(li.QuadPart - CounterStartTime) / CounterFreq;
|
|
}
|
|
|
|
void DebugPrint(const char *format, ...)
|
|
{
|
|
va_list args;
|
|
va_start(args, format);
|
|
char buffer[512];
|
|
_vsnprintf(buffer, sizeof(buffer), format, args);
|
|
OutputDebugStringA(buffer);
|
|
}
|
|
|
|
void DrawFrameInfoStart()
|
|
{
|
|
static DWORD tick_fps = 0;
|
|
static char debugText[512] = { 0 };
|
|
|
|
RECT debugrc = { 0, 0, ddraw->width, ddraw->height };
|
|
|
|
if (ddraw->primary)
|
|
{
|
|
if (ddraw->primary->palette && ddraw->primary->palette->data_rgb)
|
|
SetDIBColorTable(ddraw->primary->hDC, 0, 256, ddraw->primary->palette->data_rgb);
|
|
|
|
DrawText(ddraw->primary->hDC, debugText, -1, &debugrc, DT_NOCLIP);
|
|
}
|
|
|
|
DWORD tick_start = timeGetTime();
|
|
if (tick_start >= tick_fps)
|
|
{
|
|
_snprintf(
|
|
debugText,
|
|
sizeof(debugText),
|
|
"FPS: %lu | Time: %2.2f ms ",
|
|
DebugFrameCount * 2,
|
|
DebugFrameTime);
|
|
|
|
DebugFrameCount = 0;
|
|
tick_fps = tick_start + 500;
|
|
|
|
CounterStart();
|
|
}
|
|
|
|
DebugFrameCount++;
|
|
}
|
|
|
|
void DrawFrameInfoEnd()
|
|
{
|
|
if (DebugFrameCount == 1)
|
|
DebugFrameTime = CounterStop();
|
|
}
|