diff --git a/main.cpp b/main.cpp index 3a2e8fb..ad062f4 100644 --- a/main.cpp +++ b/main.cpp @@ -5,6 +5,7 @@ #include #include "misc.h" #include "model.h" +#include "timer.h" #pragma comment(lib,"opengl32.lib") #pragma comment(lib, "glew32.lib") @@ -105,7 +106,10 @@ INT WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine /*load model*/ unsigned int *indexes = nullptr; int vertexCount = 0, indexCount = 0; + Timer t; + t.Start(); VertexData* vertexes = LoadObjModel("res/model/Quad.obj", &indexes, vertexCount, indexCount); + printf("load model cost %fs %d\n", t.GetPassedTime(), t.GetPassedTickers()); if (vertexes == nullptr) { printf("load obj model fail\n"); diff --git a/shader2.vcxproj b/shader2.vcxproj index df7376d..ce6f785 100644 --- a/shader2.vcxproj +++ b/shader2.vcxproj @@ -149,10 +149,12 @@ + + diff --git a/shader2.vcxproj.filters b/shader2.vcxproj.filters index 9c7e1f9..96d48a3 100644 --- a/shader2.vcxproj.filters +++ b/shader2.vcxproj.filters @@ -24,6 +24,9 @@ 源文件 + + 源文件 + @@ -32,6 +35,9 @@ 源文件 + + 源文件 + diff --git a/timer.cpp b/timer.cpp new file mode 100644 index 0000000..758151f --- /dev/null +++ b/timer.cpp @@ -0,0 +1,32 @@ +#include "timer.h" + +Timer::Timer() +{ + mCurrentThread = GetCurrentThread(); + DWORD_PTR systemAffinityMask; + GetProcessAffinityMask(GetCurrentProcess(), &mProcessAffinityMask, &systemAffinityMask); + + SetThreadAffinityMask(mCurrentThread, 1); + QueryPerformanceFrequency(&mCPUFrequency); + SetThreadAffinityMask(mCurrentThread, mProcessAffinityMask); +} + +void Timer::Start() +{ + SetThreadAffinityMask(mCurrentThread, 1); + QueryPerformanceCounter(&mStart); + SetThreadAffinityMask(mCurrentThread, mProcessAffinityMask); +} + +int Timer::GetPassedTickers() +{ + SetThreadAffinityMask(mCurrentThread, 1); + QueryPerformanceCounter(&mEnd); + SetThreadAffinityMask(mCurrentThread, mProcessAffinityMask); + return mEnd.QuadPart - mStart.QuadPart; +} + +float Timer::GetPassedTime() +{ + return (float)GetPassedTickers() / (float)mCPUFrequency.QuadPart; +} diff --git a/timer.h b/timer.h new file mode 100644 index 0000000..d4ea56c --- /dev/null +++ b/timer.h @@ -0,0 +1,16 @@ +#pragma once +#include "windows.h" + +class Timer { +public: + HANDLE mCurrentThread; + LARGE_INTEGER mStart; + LARGE_INTEGER mEnd; + LARGE_INTEGER mCPUFrequency; + DWORD_PTR mProcessAffinityMask; + + Timer(); + void Start(); + int GetPassedTickers(); + float GetPassedTime(); +}; \ No newline at end of file