1. 程式人生 > >GLES2.0中文API-glShaderSource

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指定。 如果lengthNULL,則認為每個字串都以null結尾。如果length不是NULL,則它指向包含字串的每個相應元素的字串長度的陣列。length陣列中的每個元素可以包含相應字串的長度(空字元不計為字串長度的一部分)或小於0的值以表示該字串為空終止。此時不掃描或解析原始碼字串; 它們只是複製到指定的著色器物件中。

注意

著色器編譯器支援是可選的,因此必須在使用之前通過使用引數GL_SHADER_COMPILER呼叫glGet來查詢。glShaderSource,glCompileShaderglGetShaderPrecisionFormatglReleaseShaderCompiler等在不支援著色器編譯器的實現上都將生成GL_INVALID_OPERATION。這樣的實現提供了glShaderBinary替代方案,用於提供預編譯的著色器二進位制檔案。

呼叫glShaderSource時,OpenGL會複製著色器原始碼字串,因此應用程式可以在函式返回後立即釋放原始碼字串的副本。

錯誤

GL_INVALID_OPERATION:不支援著色器編譯器

GL_INVALID_VALUEshader不是OpenGL生成的值

GL_INVALID_OPERATIONshader不是著色器物件

GL_INVALID_VALUEcount比0小

相關Gets

glGet 引數GL_SHADER_COMPILER

glGetShaderiv 引數shaderGL_SHADER_SOURCE_LENGTH

glGetShaderSource 引數shader

glIsShader

另見

glCompileShaderglGetShaderPrecisionFormatglCreateShaderglDeleteShader

版權

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/.

Android,OpenGL ES,圖形學