Bladeren bron

Timing on Windows now uses QueryPerformanceCounter() instead of GetTickCount()

Much better performance. Silky smoooooth!
Devin Stone 12 jaren geleden
bovenliggende
commit
753dc34942
1 gewijzigde bestanden met toevoegingen van 7 en 1 verwijderingen
  1. 7 1
      Core/Contents/Source/PolyWinCore.cpp

+ 7 - 1
Core/Contents/Source/PolyWinCore.cpp

@@ -126,6 +126,10 @@ Win32Core::Win32Core(PolycodeViewBase *view, int _xRes, int _yRes, bool fullScre
 	wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC) wglGetProcAddress("wglSwapIntervalEXT");
 	wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC) wglGetProcAddress("wglSwapIntervalEXT");
 	wglGetSwapIntervalEXT = (PFNWGLGETSWAPINTERVALEXTPROC) wglGetProcAddress("wglGetSwapIntervalEXT");
 	wglGetSwapIntervalEXT = (PFNWGLGETSWAPINTERVALEXTPROC) wglGetProcAddress("wglGetSwapIntervalEXT");
 	
 	
+	LARGE_INTEGER li;
+	QueryPerformanceFrequency(&li);
+	pcFreq = double(li.QuadPart)/1000.0;
+	
 	setVSync(vSync);
 	setVSync(vSync);
 
 
 	CoreServices::getInstance()->installModule(new GLSLShaderModule());	
 	CoreServices::getInstance()->installModule(new GLSLShaderModule());	
@@ -161,7 +165,9 @@ void Win32Core::warpCursor(int x, int y) {
 }
 }
 
 
 unsigned int Win32Core::getTicks() {
 unsigned int Win32Core::getTicks() {
-	return GetTickCount();
+	LARGE_INTEGER li;
+	QueryPerformanceCounter(&li);
+	return unsigned int(li.QuadPart / pcFreq);
 }
 }
 
 
 void Win32Core::Render() {
 void Win32Core::Render() {