OpenGLES3.0创建和编译着色器相关语法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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创建和编译着色器相关语法的主要内容,如果未能解决你的问题,请参考以下文章
我的OpenGL学习进阶之旅OpenGL ES 3.0实现了具有可编程着色功能的图形管线
我的OpenGL学习进阶之旅OpenGL ES 3.0实现了具有可编程着色功能的图形管线