MedicalVisualization

VBOs

GL Indexed Face Sets | | OpenGL Lighting

VBOs

VBOs sind im Framework in der lglVBO Klasse abstrahiert.

VBOs werden benutzt, um Geometrie effizient zu spezifizieren:

Man fügt Vertices und Attribute hinzu, wie man es im Direct Mode gewohnt war. Die Vertices und Attribute werden aber nicht direkt über den Bus zur GPU geschickt, sondern einem Buffer (Vertex Array) hinzugefügt.

// declare VBO as member variable
lglVBO vbo;

...

// fill VBO once with vertex and attribute data
vbo.lglBegin(LGL_TRIANGLES);
   vbo.lglColor(1, 0, 0, 0);
   vbo.lglVertex(-0.5,-0.5,0);
   vbo.lglColor(0, 1, 0, 0);
   vbo.lglVertex(0.5,-0.5,0);
   vbo.lglColor(0, 0, 1, 0);
   vbo.lglVertex(0,0.5,0);
vbo.lglEnd();

Zum Zeichnen wird der Buffer am Stück als Speicherbereich zur GPU übertragen und dort gebuffert (gecached). Dies ermöglicht die Wiederverwendung ohne nochmalige Übertragung:

// render VBO
lglRender(vbo);

Alternativ: Laden eines VBOs aus einer OBJ Datei:

lglVBO *vbo = lglLoadObj("filename.obj");

Live Demo: VBO (T#1c)

GL Indexed Face Sets | | OpenGL Lighting

Options: