C++ framework for multimedia software like Games
Thu Feb 09 17:29:52 CET 2012
nb comments: 0

Lately i've entirely redesign the heart of the graphic engine in order to meet the latest specification ogl.

Differences between the version 2.1:

Since the version 3, OpenGL took a huge facelift. Indeed, the Khronos Group has brought many changes.

Here is a small non-exhaustive list of improvements:

With 3.1 :
  • Removal of old deprecated functions. Thus the entire fixed pipeline has been removed (direct rendering and display list ...). This for several reasons:
    • Encourage developers to use the latest rendering techniques.
    • Allow a transition to the next generation of graphics card that no longer support these obsolete features.
  • Integrate extentions for the management of shaders (vertex and fragment).
  • Integration of texture buffers.
  • Integration of texture sampler allowing the application of the same filtering on many textures, and vice versa.
  • Better compatibility with OpenGL ES 2.0.
  • Better compatibility with OpenCL.
  • Large improvements on GLSL (support integers, double, bit shifting, ...).
With 4.0 :
  • Tessellation, add of new types of shaders (Control, Primitive, Evaluation).
  • Subroutines.
  • Integration of Geometry shader (previously used as extensions).

That implies:

First of all, to use the opengl 3.1 and + functions we need to use the experimental header "GL3.h" available on the OpenGL Registry website.
On Linux, no problem, the functions are directly accessible from the library.
On Windows, which will always find a way to make life difficult, we must load each functions dynamically.

Then the big problem with this new version comes from the removal of the old features. So I had to recode every deprecated functions.
This include the direct pipeline, the GLU library (used to manage matrices and camera positionning), and many other functions. Needless to say we cannot change that overnight...

Ok, all this is fine. But if the direct pipeline has been deleted, How is made the rendering?
--> By the programmable pipeline! Everything will need a shader to be rendered.

This may shock at first, but two big advantages carry some weight:
  • Unification of the rendering system, every rendering is made by shader et it can also allow the centralization of rendering routines.
  • Rendering optimization by using only what you need. (which is not necessarily possible with the fixed pipeline)


Author: Ponpon
Add new comment: