next up previous contents
Next: ARB Vertex Programs Up: ARB Program Shader Previous: Praxis: Extensions mit GLew   Contents

Praxis: Laden von Shadern

Unser Programm soll zur Laufzeit beliebige Shader aus Textdateien laden können um nicht jedes mal wenn wir einen Shader ändern unser Programm neu compilieren zu müssen. Hierzu definieren wir eine Funktion die den Dateinamen des zu ladenden Shaders in einem std::string entgegen nimmt und einen char* zurückgeliefert der den Inhalt der Textdatei enthält.
\begin{lstlisting}[name=textfile.h]
char* readTextFile(const std::string& fn);
\end{lstlisting}
Die Einzelheiten der Implementation sollen dem Leser hier erspart werden, sie befindet sich in der Datei textfile.cpp.

Die Endung der zu ladenden Textdateien haben keinerlei inhärente Bedeutung, wir werden uns für dieses Dokument auf folgende Erweiterungen einigen:

.avp - ARB Vertex Program
.afp - ARB Fragment Program
.avs - ARB Vertex Shader (GLSL)
.afs - ARB Fragment Shader (GLSL)

Nun definieren wir eine weitere Funktion welche das eigentlich Laden der Shader übernehmen soll.
\begin{lstlisting}[name=shader.h: loadShader]
void loadShader(const std::string& fn);
\end{lstlisting}
Diese Funktion nimmt einen std::string entgegen der den Dateinamen enthält, versucht die Endung der Datei zu finden und ruft dann die entsprechende Funktion zum Laden des Shaders auf. Auch hier werden wir die Implementationsdetails nicht erörtern, der geneigte Leser mag sie in der Datei shader.cpp nachlesen.


next up previous contents
Next: ARB Vertex Programs Up: ARB Program Shader Previous: Praxis: Extensions mit GLew   Contents
2005-10-25 Michael Bayer - nightspawn.com