मैं http://blackpixel.com/blog/494/xcode-using-includes-in-opengl-shaders/ के आधार पर एक कस्टम समाधान [404 अब] की है। असल में यह कहा गया है कि आप फ़ाइलों को प्रीप्रोसेस करने के लिए m4 टूल का उपयोग कर सकते हैं।
include(Utils.glsl)
include(Colors.glsl)
...
void main (void) {
...
}
Xcode, सभी glsl
फ़ाइलों के लिए "कॉपी बंडल संसाधन" जोड़ें:
GLSL स्रोत फ़ाइलों में सिर्फ वांछित टुकड़ा आप पुन: उपयोग करना चाहते हैं।
इस खोल स्क्रिप्ट के साथ एक "रन स्क्रिप्ट" चरण जोड़ें:
#!/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
स्क्रिप्ट मानती है कि आपके shaders .fsh
एक्सटेंशन मौजूद है। अपने शेडर एक्सटेंशन से मेल खाने के लिए इसे संशोधित करना मुश्किल है।
चेतावनी दी रहें: अपने shaders लगभग किसी को भी आसानी से सुलभ हो जाएगा। आप इसे विकास के लिए उपयोग कर सकते हैं और उन्हें जारी करने से पहले तारों में परिवर्तित कर सकते हैं (असली सुरक्षा नहीं जब तक कि आप इसे एन्क्रिप्ट नहीं करते ...)।
इसके अलावा, यदि शेडर्स के बीच कोई साझाकरण नहीं है, तो आप बहुत सारे अप्रयुक्त कोड के साथ समाप्त हो जाएंगे। मुझे लगता है कि शेडर कंपाइलर इसका ख्याल रखेगा लेकिन कुछ प्रदर्शन दंड होने पर मुझे 100% यकीन नहीं है।