जवाबों:
आप एक हेडर फ़ाइल में कुछ कार्यों को परिभाषित कर सकते हैं और उन्हें अपने shader में शामिल कर सकते हैं। यह C / C ++ से थोड़ा अलग है, जिसमें आप अपने कार्यों के शव को हेडर में डालते हैं, न कि केवल उनके प्रोटोटाइप (क्योंकि अलग-अलग संकलन और लिंकिंग की कोई अवधारणा नहीं है), लेकिन इसके अलावा यह सिर्फ C / C ++ जैसा है। हेडर।
यदि #include उपलब्ध नहीं है, तो आप साझा किए गए सामान को निर्दिष्ट करने के लिए glShaderSource के तर्कों का उपयोग करेंगे। उदाहरण:
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);