1. 程式人生 > >OpenGLES3.0創建和編譯著色器相關語法

OpenGLES3.0創建和編譯著色器相關語法

false 程序 日誌信息 保存 get 如果 b- ade fragment

// 創建著色器,返回句柄

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創建和編譯著色器相關語法