Click here to Skip to main content
Click here to Skip to main content
Go to top

A Simple OpenGL Window Using GLUT EP_OpenGL_001

, 19 Jun 2008
Rate this:
Please Sign up or sign in to vote.
A Simple OpenGL Window using GLUT with Win32 Console Application
OpenGLBasicWindowImage.jpg

Introduction

This is a simple C++ console application to create an OpenGL window using GLUT library. The code is from "OpenGL Programming Guide (Third Edition)". I tried to show how to download and include the GLUT library file. After including the GLUT file, compiling and running the code is very simple. The source code will not work if you don't have the GLUT library. Please, download the GLUT library and include it to the specific location (explained below).

Background

You should be able to use Visual Studio 2005 and C++. You should also have some idea about OpenGL.

Using the Code

Steps:

  1. GLUT Installation (download GLUT library).
  2. Copy and paste the GLUT library files to the specific locations.
  3. Create a C++ console application.
  4. Type the code, build and execute.

Step 1

Before you even start a new project, you have to download the GLUT library. You can get the latest version from this link : GLUT 3.7.6 for Windows
Click this (glut-3.7.6-bin.zip (117 KB) ) link and download the zip file in your computer.

Step 2

Unzip the folder and copy the glut32.dll file and paste it to C:\WINDOWS\system. Copy the glut32.lib file and paste it to this directory C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib. The last step is to copy glut.h file and paste it to this directory C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include\gl. The installation of GLUT library files are done. However, if you using a different Windows or different Visual Studio, the directories might be different. I'm assuming that you are using Windows Vista and Visual Studio 2005.

Step 3

Create a C++ console application. You don't need a Windows application. From Visual Studio 2005, select: File ->New -> Projects. Select project types Visual C++ -> Win32 and create a Win32 Console Application.

Step 4

Type the code, build and execute.
Make sure to include the <GL/glut.h >.

//Include files
#include "stdafx.h"
#include <GL/glut.h >

Function "display(void)" displays a polygon.

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)
    glColor3f(1.0,1.0,1.0);
    glBegin(GL_POLYGON);
        glVertex3f(0.25, 0.25, 0.0);
        glVertex3f(0.75, 0.25, 0.0);
        glVertex3f(0.75, 0.75, 0.0);
        glVertex3f(0.25, 0.75, 0.0);
    glEnd();
    
    // Don't wait start processing buffered OpenGL routines
    glFlush();
}

Function init() initialises GLUT (sets the state):

void init(void)
{
    //select clearing (background) 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);
}

Main function. Make sure to change the command-line parameter _TCHAR* to char**.

int main(int argc, char** argv)
{
    //Initialise GLUT with command-line parameters. 
    glutInit(&argc, argv);
    
    //Set Display Mode
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    
    //Set the window size
    glutInitWindowSize(250,250);
    
    //Set the window position
    glutInitWindowPosition(100,100);
    
    //Create the window
    glutCreateWindow("A Simple OpenGL Windows Application with GLUT");
    
    //Call init (initialise GLUT
    init();
    
    //Call "display" function
    glutDisplayFunc(display);
    
    //Enter the GLUT event loop
    glutMainLoop();

    return 0;
}

Points of Interest

Actually this program is a very simple OpenGL program. However, if you are new and if you don't know how to initialise GLUT library, it might take a little bit more time to compile the code.

History

  • Uploaded on 01/29/2008

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

erjan123
Software Developer
United States United States
None

Comments and Discussions

 
QuestionOpeNGL Pinmembermaruch11-Jun-11 4:40 
Question_tmain(... char ...) ????? Pinmember emilio_grv 30-Jan-08 21:20 
chainging TCHAR into char in _tmain is incoherent.
 
the prototype is either
int main(char*, char**) or int wmain(wchar_t*, wchar_t**)
 
int _tmain(TCHAR*, TCHAR**) is a #define preprocessed in the first or second from in coherence with the value of the UNICODE or MBCS symbols and in coherence with the CRT version linked.
 
int _tmain(char*, char**) works correctly only if you're not working with UNICODE, and linking the non-unicode CRT version (so that, translates _tmain in main, and the linked _mainCRTStartup will call main.
 

2 bugs found.
> recompile ...
65534 bugs found.
D'Oh! | :doh:


General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web02 | 2.8.140905.1 | Last Updated 19 Jun 2008
Article Copyright 2008 by erjan123
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid