OpenGL ES 2.0 限定符
2016-03-19 10:28
162 查看
限定符 | 说明 | 作用 |
attribute | 一般用于各个顶点各不相同的量,如顶点位置、颜色等 | 属性限定符,修饰的变量用来接收渲染管线传递进顶点着色器的当前顶点的各种属性值。 只能用来修饰符点数标量,浮点数向量及矩阵变量 |
uniform | 一般用于同一组顶点组成的单个3D物体中所有顶点都相同的量,如当前的光源位置 | |
varying | 用于从顶点着色器传递到片元着色器的量 | |
const | 用于声明常量 |
//获取程序中aPostion引用id maPositionHandle = GLES20.glGetAttribLocation(mProgram, "aPosition");//获取程序中uMVPMatrix引用id muMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");
glGetAttribLocation方法:获取着色器程序中,指定为attribute类型变量的id。
glGetUniformLocation方法:获取着色器程序中,指定为uniform类型变量的id。
2.传递数据
// 顶点位置数据传入着色器 GLES20.glVertexAttribPointer(maPositionHandle, 3, GLES20.GL_FLOAT, false, 20, mRectBuffer); // 顶点颜色数据传入着色器中 GLES20.glVertexAttribPointer(maColorHandle, 4, GLES20.GL_FLOAT, false, 4*4, mColorBuffer); // 顶点坐标传递到顶点着色器 GLES20.glVertexAttribPointer(maTextureHandle, 2, GLES20.GL_FLOAT, false, 20, mRectBuffer);
函数原型:
void glVertexAttribPointer (int index, int size, int type, boolean normalized, int stride, Buffer ptr )
参数含义:
index 指定要修改的顶点着色器中顶点变量id;
size 指定每个顶点属性的组件数量。必须为1、2、3或者4。如position是由3个(x,y,z)组成,而颜色是4个(r,g,b,a));
type 指定数组中每个组件的数据类型。可用的符号常量有GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT,GL_UNSIGNED_SHORT, GL_FIXED, 和 GL_FLOAT,初始值为GL_FLOAT;
normalized 指定当被访问时,固定点数据值是否应该被归一化(GL_TRUE)或者直接转换为固定点值(GL_FALSE);
stride 指定连续顶点属性之间的偏移量。如果为0,那么顶点属性会被理解为:它们是紧密排列在一起的。初始值为0。如果normalized被设置为GL_TRUE,意味着整数型的值会被映射至区间[-1,1](有符号整数),或者区间[0,1](无符号整数),反之,这些值会被直接转换为浮点值而不进行归一化处理;
ptr 顶点的缓冲数据。
// 允许使用顶点坐标数组 GLES20.glEnableVertexAttribArray(maPositionHandle); // 允许使用顶点颜色数组 GLES20.glDisableVertexAttribArray(maColorHandle); // 允许使用定点纹理数组 GLES20.glEnableVertexAttribArray(maTextureHandle);
启用或者禁用顶点属性数组。 调用glEnableVertexAttribArray和glDisableVertexAttribArray传入参数index。
如果启用,那么当glDrawArrays或者glDrawElements被调用时,顶点属性数组会被使用。
—
相关文章推荐
- AOP
- OpenGL ES 2.0 shader开发
- linux中ssh登录Permanently added (RSA) to the list of known hosts问题解决
- linux基本知识
- Linux驱动修炼之道-RTC子系统框架与源码分析【转】
- Linux中常用操作命令
- 2016年:如何测试您的网站响应时间
- ionic页面footer按钮右下方的小三角实现
- 自学鸟哥linux服务-named
- Linux Bash Shell
- Linux并发(无名管道)
- 什么是Shell
- linux 中如何修改时间 date
- adb shell 调试君正板子
- 详解Nginx虚拟主机配置中server_name的具体写法
- linux下的sed用于分类标签的建立
- Tomcat配置虚拟路径
- 有用网站
- 秒杀系统架构分析与实战
- 关于动态插件化技术的网站