Created by Jijith Nadumuri at 27 Jul 2010 07:14 and updated at 07 Dec 2011 10:51
OpenGL (Open Graphics Library) is a 3D Graphics API, that is widely used along with DirectX (or the DirectXGraphics component of DirectX). As the name indicate it is 'open' or is not proprietary like DirectX (owned by Microsoft). OpenGL is better than DirectX if one need to develop cross platform graphics applications. Traditionally OpenGL is the favorite API of CAD developers and UI and HMI developers and DirectX is the favorite API of Game Developers, though both can be used vice versa. There is an audio API that complements OpenGL, named OpenAL (Open Audio Library) which is comparable to DirectSound component of DirectX. Together with OpenGL and OpenAL one can make Audio-Visual applications (including games) much like using DirectXGraphics and DirectSound.
Initializing OpenGL
Below are the steps needed for initializing OpenGL for a Windows application (that uses CWnd class in MFC or the window-handle HWND in case of Win32 SDK programming)
- Specify the size of the Window
- Specify the position of the Window
- Create the Window
- Inform OpenGL about the Window
- Provide OpenGL the Device Context of the Window
- Set the pixel format of the Device Context of the window and make it compatible with OpenGL
- Set the Rendering Context of the Window
- Set the OpenGL View Port
- Set the Depth Buffer
- Set the Projection Matrix
- Set the Perspective
- Set the ModelView Matrix
- Create some 3D object like a cube so that OpenGL can render something
All the above steps is to be placed in the initialization routine of the application
Rendering using OpenGL
Ensure that OpenGL is properly initialized and set up. Then call your animation functions and Render Functions. These functions should change some animation parameters, and invoke OpenGL render functions.
Pseudo Code
The above steps are best explained using a pseudo code. Assuming that you know how to encapsulate an API or a technology into a class and use it, below is a pseudo code sample to initialize and use OpenGL. For simplicity, OpenGL code is encapsulated into a class. Assume that the variable m_OpenGL represents an instance of this class.
For initialization these top level methods of the class can be used:-
m_OpenGL.SetWindow(TheWindow) | Tell OpenGL about the window where it can render |
m_OpenGL.SetLocation(WindowPosition_x, WindowPosition_y) | Position the OpenGL window |
m_OpenGL.SetSize(Window_width, Window_height) | Size the OpenGL window |
m_OpenGL.Initialize() | Initialize OpenGL |
Initialize steps
Let us see what the Initialize() function contains:-
CreateGLWindow() |
SetDeviceContext() |
SetPixelFormatOfDC() |
SetRenderContext() |
SetViewPort()) |
IF any of the above steps fails stop and set m_bInitOpenGL = false |
SetDepthBuffer() |
SetProjectionMatrix() |
SetPerspective() |
SetModelViewMatrix() |
CreateSome3DObject() |
Creating window
Setting Device Context
Setting the right Pixel Format for DC
Setting the OpenGL Renderng Context
Setting the View Port
Setting the Depth Buffer
Set Projection Matrix
Set Perspective
Set Model View Matrix
[]
Share:-