next up previous contents
Next: ARB Fragment Programs Up: ARB Program Shader Previous: Praxis: Laden von Shadern   Contents

ARB Vertex Programs

Wie bereits erwähnt nutzt die ARB_vertex_program-Extension eine Art Assemblersprache, welche in der Spezifikation (auffindbar in der Extension Registry [9]) definiert wird.

Um ARB Vertex Programs zu laden wird - wie bereits oben beschrieben - innerhalb von loadShader() die Funktion loadVertexProgram() aufgerufen:


\begin{lstlisting}[name=shader.cpp: loadShader]
// check for ARB_vertex_program ...
...m;
AVPLoaded = true;
\par
// free text memory
delete[] pgmstr;
\end{lstlisting}

Zunächst wird mittels des von GLew gesetzten Makros überprüft ob die Extension ARB_vertex_program unterstützt wird. Danach wird der Shader in ein char-Array geladen und auf dem Stack Platz für einen unsigned int geschaffen, welcher mittels glGenProgramsARB zum Speichern eines Handles für das zu ladende Programm verwandt wird. glBindProgramARB bewirkt dass das soeben generierte Programm gebunden wird, ähnlich wie bei Texturen. Schließlich wird der Shader mittels glProgramStringARB geladen, und zwar in das gerade gebundene Handle.

Mittels glGetError wird nun geprüft ob beim Laden ein Fehler auftrat, sollte das der Fall sein wird der Fehlerstring ausgelesen, ausgegeben und die Anwendung etwas unsanft beendet.



2005-10-25 Michael Bayer - nightspawn.com