Browse Source

封装时间计算类

master
blobt 4 years ago
parent
commit
6cb24ef88c
  1. 4
      main.cpp
  2. 2
      shader2.vcxproj
  3. 6
      shader2.vcxproj.filters
  4. 32
      timer.cpp
  5. 16
      timer.h

4
main.cpp

@ -5,6 +5,7 @@
#include <stdio.h>
#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");

2
shader2.vcxproj

@ -149,10 +149,12 @@
<ClCompile Include="main.cpp" />
<ClCompile Include="misc.cpp" />
<ClCompile Include="model.cpp" />
<ClCompile Include="timer.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="misc.h" />
<ClInclude Include="model.h" />
<ClInclude Include="timer.h" />
</ItemGroup>
<ItemGroup>
<None Include="res\shader\test.fs" />

6
shader2.vcxproj.filters

@ -24,6 +24,9 @@
<ClCompile Include="model.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="timer.cpp">
<Filter>源文件</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="misc.h">
@ -32,6 +35,9 @@
<ClInclude Include="model.h">
<Filter>源文件</Filter>
</ClInclude>
<ClInclude Include="timer.h">
<Filter>源文件</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="res\shader\test.fs">

32
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;
}

16
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();
};
Loading…
Cancel
Save