OpenGL ES之glUniform函数-----非常清晰的解释了glUniform的函数使用, 很不错!!!
2016-12-15 14:49
861 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+]
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);
指明要更改的uniform变量的位置
v0,v1,v2,v3
指明在指定的uniform变量中要使用的新值
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);
指明要更改的uniform变量的位置
count
指明要更改的元素个数。如果目标uniform变量不是一个数组,那么这个值应该设为1;如果是数组,则应该设置为>=1。
vlaue
指定一个具有count个数值的数组指针,用来更新指定的uniform变量。
void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
指明要更改的uniform变量的位置
count
指明要更改的矩阵个数
transpose
指明是否要转置矩阵,并将它作为uniform变量的值。必须为GL_FALSE。
value
指明一个指向count个元素的指针,用来更新指定的uniform变量。
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_VALUE count小于0;transpose不是GL_FALSE。
顶
3
目录(?)[+]
函数名:
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。
顶
3
相关文章推荐
- VMwareworkstations12.0.1里创建centOS6.8虚拟机及克隆
- CentOS 6.5安装配置Nginx
- linux mysql 忘记密码 怎么修改密码
- Linux部署Apache ActiveMQ 5.14.2启动报错
- Linux 安装composer 及laravel 对 composer使用
- 使用 supervisor 管理进程
- 社团划分——有向图的Label Propagation算法
- Spark交互式分析平台Apache Zeppelin的安装
- javaweb三大框架构建用户管理系统
- 阿里云Linux配置java生产环境
- opencv的几个基础函数
- Optional使用说明
- Sqoop增量导入实战
- Linux 主机被入侵后的处理案例
- Linux下chkconfig命令详解 这个简单明了啊
- LINUX: 关于SELinux
- 网站打开太慢可能性及排查分析
- Apache Kylin单机部署
- 关于配置Opencv3.1+VS2015的一些资料总结
- CentOS 6.7安装python3.5