|
我用ddraw和gdi滚动一张地图,帧率控制到60FPS,但怎么控制,画面都有撕裂感,要么就是一行一行的像素波动.
但是用DX9,开启垂直同步(D3DPRESENT_INTERVAL_ONE),滚动这张地图就不会有任何的撕裂感和波动,非常的平滑,不知道人家是怎么实现的.
这是我使用的限制FPS的函数:
- void LimitFps(int fps)
- {
- const double const_timePerFrame = 1000.0/fps;
- static double timePerFrame = const_timePerFrame;
- LARGE_INTEGER Freq;
- if (!QueryPerformanceFrequency(&Freq))
- return;
- static LARGE_INTEGER startTime = { 0 };
- static LARGE_INTEGER endTime;
- if (startTime.QuadPart == 0)
- {
- QueryPerformanceCounter(&startTime);
- return;
- }
- QueryPerformanceCounter(&endTime);
- double time = (endTime.QuadPart-startTime.QuadPart)*1000.0/Freq.QuadPart;
- if (time < timePerFrame)
- {
- double timeToWait = (Freq.QuadPart*(timePerFrame-time)/1000.0);
- LARGE_INTEGER curTime = endTime;
- while (curTime.QuadPart-endTime.QuadPart < timeToWait)
- QueryPerformanceCounter(&curTime);
- }
- QueryPerformanceCounter(&startTime);
- }
复制代码 |
|