Ich habe eine benutzerdefinierte Lösung basierend auf http://blackpixel.com/blog/494/xcode-using-includes-in-opengl-shaders/ [404 jetzt]. Grundsätzlich gesagt, dass Sie m4 Werkzeug verwenden können, um die Dateien vor zu verarbeiten.
In den GLSL-Quelldateien enthalten nur das gewünschte Fragment Sie wiederverwenden möchten:
include(Utils.glsl)
include(Colors.glsl)
...
void main (void) {
...
}
In Xcode, fügen Sie alle glsl
Dateien „Copy Bundle-Ressourcen“.
ein „Run Script“ Phase mit diesem Shell-Skript hinzufügen:
#!/bin/sh
cd ${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}
find . -name "*.fsh" | while read file; do
echo Preprocess $file
m4 "$file" > "$file.tmp"
mv "$file.tmp" "$file"
done
exit 0
Das Skript übernimmt Ihre Shadern .fsh
Erweiterung haben. Es ist trivial, es so zu modifizieren, dass es zu deinen Shader-Erweiterungen passt.
Seien Sie gewarnt: Ihre Shader werden für fast jeden zugänglich sein. Sie können es für die Entwicklung verwenden und sie in Zeichenfolgen konvertieren, bevor Sie sie freigeben (kein wirklicher Schutz, es sei denn, Sie verschlüsseln es ...).
Wenn es zwischen den Shadern nicht viele Shares gibt, wird am Ende viel ungenutzter Code übrig bleiben. Ich denke, der Shader-Compiler wird sich darum kümmern, aber ich bin nicht 100% sicher, ob es eine Leistungseinbuße gibt.