Risposte:
Puoi definire alcune funzioni in un file header e #includerle al tuo shader. È un po 'diverso da C / C ++ in quanto inseriresti i corpi delle tue funzioni nelle intestazioni, non solo i loro prototipi (poiché gli shader non hanno il concetto di compilazione e collegamento separati), ma a parte questo è proprio come C / C ++ intestazioni.
Se #include non è disponibile, utilizzare gli argomenti di glShaderSource per specificare le cose condivise. Esempio:
char *sharedcode = "...shared code here...";
char *fs1 = "...fragment shader 1...";
char *fs2 = "...fragment shader 2...";
char *awesomeeffect1[] = {sharedcode, fs1};
char *awesomeeffect2[] = {sharedcode, fs2};
glShaderSource (shader1, 2, awesomeeffect1, NULL);
glShaderSource (shader2, 2, awesomeeffect2, NULL);