GLSL wrapper in C++

Scrivere una classe in C++ che racchiuda in se tutte le operazioni possibili grazie alle estensioni di OpenGL è difficile e spesso non vale la pena farlo.

libGLSL http://www.clockworkcoders.com/oglsl/ è un wrapper di queste funzioni che però sfortunatamente viene insieme ad una serie di altre classi veramente poco utili e non cross-platform nè molto pulita.

Ho dato una ripulita al sorgente della classe principale di libGLSL e fatto un refactoring ingente in modo da avere una classe che compili senza problema su tutte le architetture (Windows, OSX e Linux) grazie alle estensioni fornite da glew.

La classe è liberamente scaribabile a questo indirizzo http://bit.ly/M18xxY

Writing a C++ class which encloses all the possible functions of OpenGL is not only difficult but also there is no need to do it. libGLSL is a wrapper of the latest OpenGL extensions which tries to contain all the needed methods to realize and implement a GLSL shader. I refactored most of the code of libGLSL in order to have a more compliant and cross-platform class than the previous and removed some annoying error messages. This class must include glew extensions which can be found at glew.sourceforge.net/

//LOAD, COMPILE, LINK</pre>
glShaderManager SM;
glShader* shader = SM.loadfromFile("test.vert","test.frag");
if (shader==0)
cout << "Error Loading, compiling or linking shader\n";
//DRAW
shader->begin();
shader->setUniform1f("MyFloat", 1.123);
glutSolidSphere(0.5,16,16);
shader->end();

L’esempio qui sotto riportato rappresenta uno dei tanti modi con cui si può utilizzare la classe GLSL, in questo caso abbiamo effettuato un effetto di riflessione speculare completa grazie al metodo noto come CubeMapping. Parlerò del metodo per ottenere riflessi di questo tipo in uno dei prossimi post dedicati appunto al cubemapping con OpenGL e GLSL.

This is an example of GLSL class in action. Here we made the effect of full specular environmental reflection known as cubemapping. I’ll treat cubemapping environmental reflection in one of the next posts.

An example of cubemap skybox reflection model done with libGLSL