Gzz OpenGL code

Gzz_CoreAPIs.gen.html Gzz_Frontend.gen.html Gzz_Backend.gen.html Gzz_Control.gen.html Gzz_GL.gen.html Gzz_architecture.gen.html#div4 div4_small

There is a considerable amount of OpenGL code in Gzz, and the OpenGL client provides markedly better visualizations than the pure Java one.

The following UML package diagram shows the overall structure of the current OpenGL code. At first sight, it may look a bit messy but most of the messiness in the diagram stems from JNI using everything because it exposes many APIs to the Java code.

Gzz_GL.gen.html#libcallgl Gzz_GL.gen.html#libtexture Gzz_GL.gen.html#libpaper Gzz_GL.gen.html#gfx gfx

The libraries

libCallGL

CallGL is a general way to execute sequences of OpenGL statements from strings. The point is to allow dynamic execution without having to bring up every function to the Java / Jython level, only needing a single entry point "Execute this code".

The syntax is simple and concise, as OpenGL tokens are supported but gl and GL_ prefixes are not used.

CallGL is extensively used inside Gzz to compile display lists.

CallGL doc++ page

libPaper

The current implementation is divided between C++, Java and Jython: the actual rendering is done through CallGL and C++ (for those parts where that is not possible due to parametrizations), but the creation of new paper objects, i.e. deciding what textures are combined how is done in Jython.

The C++ part is accessed through the gzz.gfx.gl.Paper Java class.

LibPaper doc++ page

libTexture

Mainstream graphics cards will not support real procedural texturing for a while, so in the meantime we will use canned textures and combine them in interesting ways.

LibTexture is simply a framework and a number of textures for creating procedurals.

libTexture doc++ page