Sign in to follow this  
Weston

Choppy framerate without other applications

Recommended Posts

I'm posting this here because it's a DirectX program. The problem that I have is that my application runs choppy by itself. When I start some other Windows applications (Media player, Internet Explorer) and have them run, my program suddenly increases the framerate and it runs smoothly. The only thing I can think of now that would affect this is Windows messages. So here's my main loop:
// Begin main game loop
while (true)
{
	// Handle any messages
	if (PeekMessage(&m_Msg, NULL, 0, 0, PM_REMOVE))
	{
		if (m_Msg.message == WM_QUIT) break;

		TranslateMessage(&m_Msg);
		DispatchMessage(&m_Msg);
	}
	else 
	{
		// Is the application in the foregound?
		if (GameAppActive)
		{
			// Set the timer
			Timer = timeGetTime();
			TimerDifference = Timer - TimerLast;
			TimerLast = Timer;

			// Draw a frame
			if (!(Frame())) break;
		}
		else
		{
			// Wait for messages since it isn't active now
			WaitMessage();
			TimerLast = timeGetTime();
		}
		
		// Seems to eliminate the window covering problem
		Sleep(1);
	}
}
// End main game loop



It looks fine to me, so maybe that isn't the problem. Perhaps there are some graphics settings that would affect it? Any ideas whatsoever are welcome.

Share this post


Link to post
Share on other sites
Unfortunately it doesn't help. The if/else code allows windows to completely handle all messages before drawing a frame (The Microsoft recommended way), and the Sleep(1) lets the application sit for a millisecond. For some reason, it gets rid of a problem I had earlier (I would cover the client area of the window with another window, and my computer would bog down horribly slow).

Anything else that someone would want to know about my application?

Share this post


Link to post
Share on other sites
My app has similar issues depending on what you call choppy. Mine kind of... oscelates between fast and slow while windowed. About 1 full fast/slow cycle per second. I figured it was an issue with my design, or some windows quirk; both of which I couldn't likely fix, hence the bug is still there.

Share this post


Link to post
Share on other sites
Sorry to bring this back up again, but I don't think the problem is with my code now. I've tried other applications that depend on timeGetTime(), and they have the same problem. I'm thinking my clock is corrupted. However, to double check, I have my program ready for download here:

http://members.aol.com/tenk/Boat.zip

It should run perfectly smooth when no other applications are running.

EDIT:
Left/Right: Move camera
Esc/Right Mouse Button: Exit

Share this post


Link to post
Share on other sites
>>My app has similar issues depending on what you call choppy. Mine kind of... oscelates between fast and slow while windowed. About 1 full fast/slow cycle per second. I figured it was an issue with my design, or some windows quirk; both of which I couldn't likely fix, hence the bug is still there.<<

Yeah i have that problem to when i run in windowed mode, fullscreen runs fine.
But i dont think it has any relation to timeGetTime, as i dont use it, and i dont use Sleep either.

It doesnt do it all the time, only sometimes, almost at the whyme of windows, which also leads me to believe its not totally my problem.

if anyone would have a direct answer to this....IT WOULD BE GREAT :)!!

Share this post


Link to post
Share on other sites
Finally found a solution that works!
EDITED
timeBeginPeriod(1);
Timer = timeGetTime();
timeEndPeriod(1);
TimerDifference = Timer - TimerLast;
TimerLast = Timer;

I don't know why it works, and I don't give a damn! :)

[Edited by - Weston on August 5, 2004 11:54:57 PM]

Share this post


Link to post
Share on other sites
you need to adjust the second timeBeginPeriod(1) to timeEndPeriod(1) like this

timeBeginPeriod(1);
Timer = timeGetTime();
timeEndPeriod(1);

what this does is it increases the precision of timeGetTime to 1ms instead of the default 5ms

check out the msdn reference for timeGetTime

you can find the info in the remarks section

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this