From Ohm

OpenGL Legacy API

Houston, we have a problem!

A short history of OpenGL

With OpenGL 3.0 functions like glVertex do not exist any longer. Those commands are called legacy functions. As a replacement for the legacy functions, later OpenGL versions offer the more efficient vertex buffer objecs (VBOs) and GLSL shaders.

To make it even more complicated:

This is true for a so called core profile, in the compatibility profile the legacy functions are still available. But we do not get a higher OpenGL version than 3.2 in the compatibilty profile. If we would like to use the latest OpenGL standard 4.x, we have to use VBOs (vertex array objects) and GLSL shader (i.e. the programmable pipeline). For embedded devices OpenGL ES does not even offer a compatibily profile, so we definitly have to use the programmable pipeline on Android, for example. If we would go for that, we would be having quite a hard time to just get a simple OpenGL example running.

For this reason, it is more convenient for OpenGL beginners, to work with the the Legacy OpenGL API in the first place and proceed gradually to shader programming when getting more experienced with the OpenGL fundamentals. In order to do so, we use the glVertex C++ library, which emulates the legacy functions even if the installed OpenGL drivers do no longer support it. It also eases the use of GLSL shaders, so that much of the initial hassles of the programmable OpenGL pipeline can be avoided.

The glVertex C++ library and its respective documentation is hosted on SourceForge:

 http://sourceforge.net/projects/glvertex/

In principle this simply means that we replace all occurrences of OpenGL legacy functions with the prefix gl (e.g. glVertex3d) with their emulated C++ counterparts with the prefix lgl (e.g. lglVertex):

glVertex3d(…) → lglVertex(…)

Usage example:

lglMatrixMode(LGL_MODELVIEW);
lglLoadIdentity();
lglLooktAt(0,0,0, 0,0,-1, 0,1,0);
lglTranslate(0,0,-10);
lglColor(1,0,0);
lglBegin(LGL_TRIANGLES);
   lglVertex(0,0,0);
   lglVertex(-1,-1,0);
   lglVertex(1,-1,0);
lglEnd();

More details about the glVertex wrapper library are found in the documentation:

 http://sourceforge.net/p/glvertex/wiki/Documentation

Retrieved from http://schorsch.efi.fh-nuernberg.de/roettger/index.php/MedicalVisualization/OpenGLLegacyAPI

Page last modified on November 29, 2016, at 09:05 PM