OpenGL Tutorial - 1
How to install OpenGL? or Installation guide for OpenGL? or How can I compile my first OpenGL program using MS Visual Studio 2005, 2008, 2010, 2011, 2012?
Windows Installation:
I am assuming that you have Microsoft Visual Studio 2010 in your system. So, here we go, just download the precomposed package which I made a long ago, I always need this package whenever I reinstall my windows.

File Name | Type | Size | Release Date |
OpenLibraries | *.zip | 482 KB | 2012.07.11 |
After downloading the above zip file...
Extract it. You will find three folders named dll, lib, include.
Now what you need to do is...
Copy all the *.dll files from the "ddl" folder and paste into "C:\Windows\System32" folder.
Copy all the *.lib files from the "lib" folder and paste into "C:\Program Files\Microsoft Visual Studio 10.0\VC\lib"
folder.
If you are working in Visual Studio 2005 then paste all *.lib files into "C:\Program Files\Microsoft Visual Studio 8\VC\lib" folder.
Copy both folders "GL" and "AL" from the include folder and paste into "C:\Program Files\Microsoft Visual Studio 10.0\VC\include" folder.
If you are working in Visual Studio 2005 then paste both folder into "C:\Program Files\Microsoft Visual Studio 8\VC\include" folder.
Congratulations, you have successfully installed OpenGL and OpenAL in your system. OpenAL will help you to play sounds (audio files) in your OpenGL applications.
Now you can easily compile your first OpenGL program in MS VS 2010. Download my sample VS2010 Project and run it.

File Name | Type | Size | Release Date |
OpenGLTest_VS2010Proj | *.zip | 662 KB | 2012.06.17 |
If you don´t want to use my sample project then here is the method to make a new VS2010 project for OpenGL programs.
Start MS Visual Studio 2010 C++ and create a new empty project of type Win32 Console
Application" from "File -> New -> Project -> Visual C++ -> Win32 -> Win32 Console
Application -> Write Name of your New Project -> Press OK -> Press Next -> Select Empty Project -> Press Finish".
Now on the left pannel, right click on "Source Files then Add -> New Item -> Now select C++ File (.cpp) -> Write name of your .cpp file (for example: opengltest.cpp)-> Press Add".
Now copy and paste my sample OpenGL code into your newly created *.cpp file.
Finally, Rebuild (Ctrl+Alt+F7) and run the program by pressing Ctrl+F5 or go to Debug menu and press "Start Without Debugging".
From here you can download the opengltest.cpp file. The file contains a full OpenGL program in which a Cube is rendered.

File Name | Type | Size | Release Date |
OpenGLTest | *.cpp | 4.27 KB | 2012.06.17 |
/********************************************************************
Created: 2012/06/17
Created: 17:6:2012 23:24
Filename: opengltest.cpp
Author: Furqan Ullah
Website: www.real3d.pk
Disclaimer: This tutorial has been written for learning purposes only.
*********************************************************************/
#include < stdlib.h>
#include < GL/glut.h>
/************************************************************************/
/* Initialization of OpenGL */
/************************************************************************/
int initOpenGL (GLvoid)
{
glClearColor(0.0f, 0.28f, 0.49f, 0.0f);
glShadeModel (GL_SMOOTH);
return true;
}
/************************************************************************/
/* This is the main OpenGL function. Whatever you want to draw in your OpenGL application, you will need to write in this function only. */
/* This is a real-time activated function, this function operates like a loop function, */
/************************************************************************/
void display(void)
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(15.0, 1.0, 0.0, 0.0);
glRotatef(30.0, 0.0, 1.0, 0.0);
glRotatef(0, 0.0, 0.0, 1.0);
glutWireCube(30.0);
glPopMatrix();
glutSwapBuffers();
}
/************************************************************************/
/* This function defines the camera location, type of projection, and window shape after each frame. */
/************************************************************************/
void reshape(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0, (GLdouble)w / (GLdouble)h, 0.1, 10000.0);
gluLookAt(0.0, 0.0, 100.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
/************************************************************************/
/* This is the main function, from where the compiler start compiling your code.
* Think in this way.. your compiler starts reading your code from first line of your main function. */
/* So, the compiler reads your code from up to down.
* It means that you will need to declare all relevant variables before that specific function. */
/* Just read from first line to last one. Its not that much difficult, everything is clear.
* Do not think too much, just concentrate on the variable names. You will know the meaning of that variable soon. */
/************************************************************************/
int main(int argc, char** argv)
{
int WINDOW_SIZE_W = 1024/2; // width of your OpenGL window
int WINDOW_SIZE_H = 768/2; // height of your OpenGL window : it will be your choice, whatever size you want, just change the values.
int screenW = glutGet(GLUT_SCREEN_WIDTH); // get the width of your desktop window, or in other words, the resolution you are working on.
int screenH = glutGet(GLUT_SCREEN_HEIGHT); // get the height of the your desktop window
int windowPosX = (screenW - WINDOW_SIZE_W) / 2; // calculation for placing the OpenGL window at your monitor's/LCD's center.
int windowPosY = (screenH - WINDOW_SIZE_H) / 2; // calculation for placing the OpenGL window at your monitor's/LCD's center.
glutInitWindowSize (WINDOW_SIZE_W, WINDOW_SIZE_H); // Initialization of OpenGL window
glutInitWindowPosition (windowPosX, windowPosY); // OpenGL windows position at the center of LCD
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_MULTISAMPLE); // Initialization of display mode. Multisample for anti-aliasing.
glutCreateWindow("OpenGL Test by Furqan"); // Create OpenGL window with a title
initOpenGL(); // Initialization of OpenGL with default operations, for example, set the background color of the OpenGL window, Enable Lights etc.
glutDisplayFunc(display); // Main display function of OpenGL, whatever you want to display in your application you have to write in display() Func.
glutReshapeFunc(reshape); // Reshape controller of the OpenGL window
glutMainLoop(); // Main loop of GLUT.
return 0;
}