名称
glShaderSource - 替换着色器对象中的源代码
C规范
void glShaderSource(GLuint shader,GLsizei count,const GLchar * const *string,const GLint *length);
参数
shader
要被替换源代码的着色器对象的句柄(ID)。
count
指定字符串和长度数组中的元素数。
string
指定指向包含要加载到着色器的源代码的字符串的指针数组。
length
指定字符串长度的数组。
描述
对于支持着色器编译器的实现,glShaderSource将着色器中的源代码设置为string指定的字符串数组中的源代码。先前存储在着色器对象中的任何源代码都将被完全替换。数组中的字符串数由count指定。 如果length为NULL,则认为每个字符串都以null结尾。如果length不是NULL,则它指向包含字符串的每个相应元素的字符串长度的数组。length数组中的每个元素可以包含相应字符串的长度(空字符不计为字符串长度的一部分)或小于0的值以表示该字符串为空终止。此时不扫描或解析源代码字符串; 它们只是复制到指定的着色器对象中。
注意
着色器编译器支持是可选的,因此必须在使用之前通过使用参数GL_SHADER_COMPILER调用glGet来查询。glShaderSource,glCompileShader,glGetShaderPrecisionFormat,glReleaseShaderCompiler等在不支持着色器编译器的实现上都将生成GL_INVALID_OP

glShaderSource 函数用于替换着色器对象中的源代码,支持预编译的着色器二进制文件作为替代。在使用此函数前,需要检查 GL_SHADER_COMPILER 参数以确保着色器编译器被支持,否则会引发 GL_INVALID_OPERATION 错误。如果 shader 参数无效或不是着色器对象,也会导致错误。glShaderSource 会复制源代码,允许应用在函数返回后释放源字符串。

2320

被折叠的 条评论
为什么被折叠?



