Answers:
您可以在头文件中定义一些函数,然后将其#include到着色器中。它与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);