Sign in to follow this  
AkariDesire

Windowed Mode Using C++ & Free GLUT ....

Recommended Posts

I am working on a game project using c++ and free glut and need to create a windowed mode in order for the game to be supported on machines with integrated graphics. However I haven't been able to find anything that makes sense that I input into my code.

Any suggestions of applicable code would be very helpful.

I am able to provide the code I have if necessary.

Akari x

Share this post


Link to post
Share on other sites

Here's the code to a simple program that opens a window and refreshes it
 

*
 * hello.c
 * This is a simple, introductory OpenGL program.
 */

#include <stdlib.h>
#include <GL/glut.h>

void display(void)
{
/* clear all pixels  */
   glClear (GL_COLOR_BUFFER_BIT);

/* draw white polygon (rectangle) with corners at
 * (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0)  
 */
   glBegin(GL_POLYGON);
      glColor3f  (1.0, 0.0, 0.0);
      glVertex3f (0.25, 0.25, 0.0);
      glColor3f  (0.0, 1.0, 0.0);
      glVertex3f (0.75, 0.25, 0.0);
      glColor3f  (0.0, 0.0, 1.0);
      glVertex3f (0.75, 0.75, 0.0);
      glColor3f  (1.0, 1.0, 1.0);
      glVertex3f (0.25, 0.75, 0.0);
   glEnd();

/* don't wait!  
 * start processing buffered OpenGL routines 
 */
   glFlush ();
}

void init (void) 
{
/* select clearing color 	*/
   glClearColor (0.0, 0.0, 0.0, 0.0);

/* initialize viewing values  */
   glMatrixMode(GL_PROJECTION);
   //glLoadIdentity();
   glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}

/* 
 * Declare initial window size, position, and display mode
 * (single buffer and RGBA).  Open window with "hello"
 * in its title bar.  Call initialization routines.
 * Register callback function to display graphics.
 * Enter main loop and process events.
 */

void reshape(int w, int h)
{
	// You can choose to use only portion of the window
	//if (w > h)
	//	glViewport(0, 0, h, h);
	//else
	//	glViewport(0, 0, w, w);
	
	// Or you can change the viewing volume based on the window size.
    glViewport(0, 0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    if (w <= h)
        glOrtho(0.0, 1.0, 0,
            1.0 * (GLfloat) h / (GLfloat) w, -1.0, 1.0);
    else
        glOrtho(0, 1.0 * (GLfloat) w / (GLfloat) h, 0, 1.0, -1.0, 1.0);
    glMatrixMode(GL_MODELVIEW);
    glutPostRedisplay();
}

int main(int argc, char** argv)
{
   glutInit(&argc, argv);
   glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
   glutInitWindowSize (200, 150); 
   glutInitWindowPosition (100, 100);
   glutCreateWindow ("Bob Holcomb’s First OpenGL Program");
   init ();
   glutDisplayFunc(display);
   glutReshapeFunc(reshape);
   glutMainLoop();
   return 0;   /* ANSI C requires main to return int. */
}

Share this post


Link to post
Share on other sites

Do you have to use FreeGLUT?  Why not pick something more recent (i.e have been developed on in the last 10 years), like GLFW or SFML? 

 

Cheers, 

 

Bob

FreeGlut is being developed.  Its Glut that is no longer developed.  That said, I still prefer GLFW.

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