名称
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_OPERATION。这样的实现提供了glShaderBinary替代方案,用于提供预编译的着色器二进制文件。
调用glShaderSource时,OpenGL会复制着色器源代码字符串,因此应用程序可以在函数返回后立即释放源代码字符串的副本。
错误
GL_INVALID_OPERATION:不支持着色器编译器
GL_INVALID_VALUE:shader不是OpenGL生成的值
GL_INVALID_OPERATION:shader不是着色器对象
GL_INVALID_VALUE:count比0小
相关Gets
glGet 参数GL_SHADER_COMPILER
glGetShaderiv 参数shader和GL_SHADER_SOURCE_LENGTH
glGetShaderSource 参数shader
另见
glCompileShader,glGetShaderPrecisionFormat,glCreateShader,glDeleteShader
版权
https://www.khronos.org/registry/OpenGL-Refpages/es2.0/xhtml/glShaderSource.xml
https://blog.csdn.net/flycatdeng
Copyright © 1991-2006 Silicon Graphics, Inc.本文档的许可是根据SGI Free Software B License.详见http://oss.sgi.com/projects/FreeB/.