OpenGLES3.0創建和編譯著色器相關語法
GLuint glCreateShader(GLenum type)
type:
GL_VERTEX_SHADER
GL_FRAGMENT_SHADER
// 刪除著色器
void glDeleteShader(GLuint shader)
如果一個著色器已經連接到程序對象,那麽不會立刻刪除,而是先標記,等到沒有任何連接時,再釋放內存。
// 設置著色器源碼
void glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length)
count 著色器源字符串的數量,著色器可以由多個源字符串組成,但是每個著色器只能有一個main函數
string 指向保存數量為count的著色器源字符串的數組指針
length 指向保存每個著色器字符串大小且元素數量為count的整數數組指針,可以為NULL
// 編譯著色器
void glCompileShader(GLuint shader)
// 查詢著色器信息
void glGetShaderiv(GLuint shader, GLenum pname, GLint *params)
pname:
GL_COMPILE_STATUS// 編譯狀態 返回GL_TRUE或GL_FALSE
GL_DELETE_STATUS// 刪除狀態 返回是否用glDeleteShader標記
GL_INFO_LOG_LENGTH// 日誌長度
GL_SHADER_SOURCE_LENGTH// 源碼長度
GL_SHADER_TYPE// 著色器類型,返回GL_VERTEX_SHADER或GL_FRAGMENT_SHADER
params 整數指針,用於返回結果
// 獲取日誌信息
void glGetShaderInfoLog(Gluint shader, Glsizei maxLength, Glsizei *length, Glchar *infoLog)
maxLength:需要獲取的信息日誌緩沖區長度
length:寫入的信息日誌長度 如果不知道長度,可以填NULL
infoLog 用於返回信息日誌的緩沖區
OpenGLES3.0創建和編譯著色器相關語法