So I'm working on this OpenGL 3D Graph program, and like, I ran into some trouble, since I wanted it to support fullscreen, so I made the following;

int main(int argc, char *argv[])
    {
    ...  // Some stuff
    glutSpecialFunc(SpecKey);
    ... // More stuff
    }

Which is calling the following function;

GLvoid ResetWindowSize(GLvoid)  // Reset WindowSize
    {
    glutReshapeWindow(WindowWidth, WindowHeight);
    glutPositionWindow(0,0);
    }

GLvoid SpecKey(GLint key, GLint x, GLint y)
	{
	if (key == GLUT_KEY_F1)     // Toggle FullScreen
            {
	    fullscreen = !fullscreen; // Toggle FullScreenBool
	    if (fullscreen)
	    	{
		glutFullScreen();     // Enable Fullscreen
            	}
	    else
            	{
            	ResetWindowSize();    // Make Window, and resize
            	}
            }
	}

WindowWidth and WindowHeight are both global variables, which are updated everytime I'm resizing the window.

fullscreen is a global bool.

The problem is, that going to fullscreen is working fine, however returning to windowed mode, is giving me some problem since it returns with a window resolution equal to my desktop resolution, and not the resolution which is givin' in the variables WindowWidth and WindowHeight.

Anyone able to figure out the problem?

EDIT; I'm able to get it into a fixed resolution using fixes values instead of the variables like this;

GLvoid ResetWindowSize(GLvoid)  // Reset WindowSize
    {
    glutReshapeWindow(800, 600);
    glutPositionWindow(0,0);
    }

However to make this work I'm forced to call the "ResetWindowSize" function twice?

This article has been dead for over six months. Start a new discussion instead.