OpenGL之glUniform函数
来源:互联网 发布:阿里云发票 编辑:程序博客网 时间:2024/05/29 03:50
函数名:
glUniform
功能:
为当前程序对象指定Uniform变量的值。(译者注:注意,由于OpenGL ES由C语言编写,但是C语言不支持函数的重载,所以会有很多名字相同后缀不同的函数版本存在。其中函数名中包含数字(1、2、3、4)表示接受这个数字个用于更改uniform变量的值,i表示32位整形,f表示32位浮点型,ub表示8位无符号byte,ui表示32位无符号整形,v表示接受相应的指针类型。 )
函数原型:
void glUniform1f(GLint location, GLfloat v0); void glUniform2f(GLint location, GLfloat v0, GLfloat v1); void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); void glUniform1i(GLint location, GLint v0); void glUniform2i(GLint location, GLint v0, GLint v1); void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
参数列表:
location
指明要更改的uniform变量的位置
v0,v1,v2,v3
指明在指定的uniform变量中要使用的新值
函数原型:
void glUniform1fv(GLint location, GLsizei count, const GLfloat *value); void glUniform2fv(GLint location, GLsizei count, const GLfloat *value); void glUniform3fv(GLint location, GLsizei count, const GLfloat *value); void glUniform4fv(GLint location, GLsizei count, const GLfloat *value); void glUniform1iv(GLint location, GLsizei count, const GLint *value);void glUniform2iv(GLint location, GLsizei count, const GLint *value);void glUniform3iv(GLint location, GLsizei count, const GLint *value);void glUniform4iv(GLint location, GLsizei count, const GLint *value);
参数列表:
location
指明要更改的uniform变量的位置
count
指明要更改的元素个数。如果目标uniform变量不是一个数组,那么这个值应该设为1;如果是数组,则应该设置为>=1。
vlaue
指定一个具有count个数值的数组指针,用来更新指定的uniform变量。
函数原型:
void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
参数列表:
location
指明要更改的uniform变量的位置
count
指明要更改的矩阵个数
transpose
指明是否要转置矩阵,并将它作为uniform变量的值。必须为GL_FALSE。
value
指明一个指向count个元素的指针,用来更新指定的uniform变量。
描述:
glUniform更改一个uniform变量或数组的值。要更改的uniform变量的位置由location指定,location的值应该由glGetUniformLocation函数返回。通过调用glUseProgram,glUniform操作的程序对象将成为当前状态的一部分。
glUniform{1|2|3|4}{f|i}使用传进来的实参,修改通过location指定的uniform变量。
所有在程序对象中定义的活动uniform变量,在程序对象链接成功后都会被初始化为0.直到下一次程序对象链接成功再一次被初始化为0前,它们将保留通过调用glUniform赋给它们的值。
glUniform{1|2|3|4}{f|i}v可以用来更改单个uniform变量的值,或者一个uniform变量数组。
glUniformMatrix{2|3|4}fv用来更改一个矩阵或一个矩阵数组。
错误:
GL_INVALID_OPERATION 没有当前程序对象;着色器中的uniform变量的尺寸和glUniform中指明的尺寸不一致;glUniform的整形变体加载float类型的uniform变量,或者float类型的变体加载整形的uniform变量;location不是当前程序对象的有效uniform位置,并且location的值不等于-1;count的值大于1,但是指明的uniform变量不是一个数组;如果采样器不是调用glUniform1i 和glUniform1iv。
GL_INVALID_VALUE count小于0;transpose不是GL_FALSE。
来源:http://blog.csdn.net/wangyuchun_799/article/details/7742787
- OpenGL之glUniform函数
- OpenGL ES之glUniform函数
- OpenGL ES之glUniform函数
- OpenGL ES之glUniform函数
- OpenGL ES之glUniform函数
- OpenGL ES之glUniform函数
- OpenGL ES之glUniform函数
- OpenGL ES之glUniform函数
- OpenGL ES--glUniform函数
- OpenGL ES之glUniform函数-----非常清晰的解释了glUniform的函数使用, 很不错!!!
- glUniform
- glUniform
- opengl vert frag glUniform 初始代码参考
- OpenGL之gluLookAt函数
- OpenGL 之glShadeModel函数
- OpenGL之gluLookAt()函数
- opengl之glScalef()函数
- OpenGl学习之glRotate函数
- Android系统架构图学习
- Winserver 2008事件日志-事件ID详解
- PO VO POJO BO在项目中的区别
- CentOS安装skynet问题总结
- 一个mybatis的配置文件
- OpenGL之glUniform函数
- ubuntu关闭登陆密码
- Svn常用命令总结[转载]
- Java Thread(线程)案例详解sleep和wait的区别
- SQL Server 2008 还原备份文件
- java.lang.IllegalAccessError
- MPAndroidChart开源图表实现饼状图
- 使用存储过程和反射获取从多个数据表所需信息
- Spring架构详解之Core组件详解