Antworten:
Sie können einige Funktionen in einer Header-Datei definieren und # in Ihren Shader aufnehmen. Es unterscheidet sich ein wenig von C / C ++ darin, dass Sie die Körper Ihrer Funktionen in die Header einfügen würden, nicht nur ihre Prototypen (da Shader kein Konzept für separates Kompilieren und Verknüpfen haben), sondern ansonsten wie C / C ++ Überschriften.
Wenn #include nicht verfügbar ist, würden Sie die Argumente von glShaderSource verwenden, um das gemeinsam genutzte Material anzugeben. Beispiel:
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);