GLES2.0中文API-glShaderSource
名稱
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
Copyright © 1991-2006 Silicon Graphics, Inc.本文件的許可是根據SGI Free Software B License.詳見http://oss.sgi.com/projects/FreeB/.