Saturn image

Saturn Software Mills

Free Screen Capture, save any part of screen, free powerful video screen capture tool, save output in BMP, JPG, AVI file formats, download free screensaver and technical articles

 

Home    Free Software     Buy Now      Free Downloads     Articles     Contact Us     Link Exchange

 
 

 

Using OpenGL with Visual C++

 

 

 

The OpenGL is a graphics library which provides the interface to your graphics hardware. It was first released by SGI systems. SGI is producer of marvelous graphics workstations. They have been the king in the graphics field. They released a line of graphics workstations and server in the market. These workstations were loaded with IRIS/UNIX operating system. They designed the powerful graphics library, OpenGL, to exploit the power of the specialized proprietary graphics hardware.
The best thing about the OpenGL is that it is hardware independent library. It does not require any special hardware to perform its functions. If your computer is equipped with special graphics accelerator hardware, it will use it otherwise the required functionality is emulated by software.
With the popularity and the power of the OpenGL, it becomes mandatory to provide it on other operating systems platform. Now the powerful OpenGL library is available on Windows platform also. It comes free of cost with the Microsoft Visual C++ pack. The MSDN supports the help files related to OpenGL. The OpenGL can be found on your system at the following location if the Microsoft Visual C++ is installed on your system.

The include file path may be:

C:/Program Files/Microsoft Visual Studio/VC98/Include/GL

This contains three files
GL.h
GLAUX.h
GLU.h

Yes, believe me, just three include files, not more than that!!!

The library file path may be:

C:/Program Files/Microsoft Visual Studio/VC98/lib

It contains three OpenGL related libraries
GLAUX.lib
GLU32.lib
OPENGL32.lib

That’s it.

If you have such files on your system, you can start programming in OpenGL. As I wrote earlier, OpenGL is a library, so you must include the header file at appropriate places in your program like other libraries and include OpenGL library during linking otherwise you will get link time error messages.

Features of OpenGL
 


The following functionalities are provided by the OpenGL.

Drawing Primitive Geometric Objects
All the primitive drawing objects like line, polygon, triangle strip, quad strip, triangle fan etc. are supported.

Viewing and Modeling Transformations
The orthographic , perspective projection, rotation, scaling, translation etc. supported by the library.

Display Lists
To store a series of OpenGL Commands and execute at a later time. It helps in building the animation, movies etc.

Color
Color and shading technique to describe the graphical model.

Lighting
Light model for ambient light, specular light, diffuse light supported by the library.

Blending, Antialiasing, Fog
These features let you create a realistic computer generated scene.

Drawing Pixels, Bitmaps, Fonts, Images
Representation and display of 2D data as pixels, bitmaps or images.

Texture mapping
Mapping technique to wrap 1D or 2D texture on the 3D objects.

Framebuffer
Description and control of all the buffers. It helps in generation of industry standard animations.

Evaluators & NURBS
Advanced technique for 2D-3D curves and surfaces.

Selection and Feedback
It allows the selection of 3D object on 3D screen using the mouse.

The OpenGL e-book can be searched on the Internet for free download. If you could not find it please contact me for a free copy at support@saturnsoftmills.com

So far, we have talked a lot about the OpenGL. Now it is time to talk about its interface with the Visual C++. This is simple but most important step before you start programming in OpenGL. The one by one steps are given below, follow them and enjoy.

1. Create a New MFC based application (the way you wish).
2. Go to Project->.Setting. Click on the “link” tab. Specify the name of all the OpenGL library in “Object/library Modules”. Press OK.
3. Open your project view class cpp file. Search for the function named “OnInitialUpdate”. If it is not found, go to view->ClassWizard and add it. Add the following code inside the OnInitialUpdate function.

void CYourPrjView::OnInitialUpdate()
{
CView::OnInitialUpdate();

// TODO: Add your specialized code here and/or call the base class
RECT rect;
cdc = (CDC*)GetDC();

// Getting the client rect
GetClientRect(&rect);


//setting pixel format for GL compatibility

PIXELFORMATDESCRIPTOR pfd = {
sizeof (PIXELFORMATDESCRIPTOR), // Size of this structure
1, // Version number
PFD_DRAW_TO_WINDOW | // Flags
PFD_SUPPORT_OPENGL |
PFD_DOUBLEBUFFER,
PFD_TYPE_RGBA, // RGBA pixel values
24, // 24-bit color
0, 0, 0, 0, 0, 0, // Don't care about these
0, 0, // No alpha buffer
0, 0, 0, 0, 0, // No accumulation buffer
32, // 32-bit depth buffer
0, // No stencil buffer
0, // No auxiliary buffers
PFD_MAIN_PLANE, // Layer type
0, // Reserved (must be 0)
0, 0, 0 // No layer masks
};

int nPixelFormat = ChoosePixelFormat(cdc->m_hDC, &pfd);

SetPixelFormat(cdc->m_hDC, nPixelFormat, &pfd);
hrc = wglCreateContext(cdc->m_hDC); // define hrc in your .h file
wglMakeCurrent(cdc->m_hDC,hrc);

// Setting the gl drawing environment

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0,1.0,1.0,2000.0);
glViewport(rect.left,rect.top,rect.right,rect.bottom);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(0.0,0.0,0.0,1.0);
}

4. Declare the HGLRC hrc variable in the YourPrjView.h file.
5. Start programming in OpenGL, dude. Go and write some code in OnDraw function, Compile, link and Run.

It is so simple to use OpenGL in Visual C++ environment. If you are expert programmer and have good knowledge of OpenGL, you can produce your own Jurassic Park. You can be next successful Producer and Director in Hollywood.

 
 

 

 

 

 

 

Home | Free Software | Buy Now | Free Downloads | Articles | Contact Us | Link Exchange

 

All rights reserved with saturnsoftmills.com