限定符 说明 作用
attribute 一般用于各个顶点各不相同的量,如顶点位置、颜色等

属性限定符,修饰的变量用来接收渲染管线传递进顶点着色器的当前顶点的各种属性值。

只能用来修饰符点数标量,浮点数向量及矩阵变量

uniform 一般用于同一组顶点组成的单个3D物体中所有顶点都相同的量,如当前的光源位置  
varying 用于从顶点着色器传递到片元着色器的量  
const 用于声明常量  

1.获取着色器程序内成员变量的id,也可以理解为句柄、指针。

        //获取程序中aPostion引用id
maPositionHandle = GLES20.glGetAttribLocation(mProgram, "aPosition");//获取程序中uMVPMatrix引用id
muMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");

glGetAttribLocation方法:获取着色器程序中,指定为attribute类型变量的id。

glGetUniformLocation方法:获取着色器程序中,指定为uniform类型变量的id。

2.传递数据

// 顶点位置数据传入着色器
GLES20.glVertexAttribPointer(maPositionHandle, , GLES20.GL_FLOAT, false, , mRectBuffer);
// 顶点颜色数据传入着色器中
GLES20.glVertexAttribPointer(maColorHandle, , GLES20.GL_FLOAT, false, *, mColorBuffer);
// 顶点坐标传递到顶点着色器
GLES20.glVertexAttribPointer(maTextureHandle, , GLES20.GL_FLOAT, false, , 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被调用时,顶点属性数组会被使用。

												

最新文章

  1. phoneGap蓝牙设备链接打印操作插件
  2. Html的智能表单
  3. MVVM架构~前台后台分离的思想与实践
  4. PHP 判断客户端是IOS还是Android
  5. Ecshop(二次开发) - 后台添加左侧菜单导航
  6. 理解CSS Clip属性及用法
  7. 最短路知识点总结(Dijkstra,Floyd,SPFA,Bellman-Ford)
  8. 关于Android中为什么主线程不会因为Looper.loop()里的死循环卡死?引发的思考,事实可能不是一个 epoll 那么 简单。
  9. windows c++ 程序移植到Linux的一些要点
  10. SDK,API概念
  11. android wheelview实现三级城市选择
  12. MonolithFirst
  13. kubernetes实战之运行aspnetcore webapi微服务 - kubernetes
  14. 关于MySQL中的自联结的通俗理解
  15. day12_雷神_线程总结
  16. Maven项目的结构分析
  17. [UE4]通过使用Set TimerByFunctionName来实现反射机制
  18. <转载>css3 概述
  19. ASP入门(十三)-Server对象
  20. JAVA 定时器时间格式

热门文章

  1. Win7下VS2010使用STLPort 和boost1.56.
  2. Retinex processing for automatic image enhancement 翻译
  3. zip命令的用法
  4. 腾讯CMEM的PHP扩展(转载)
  5. 文成小盆友python-num9 socket编程
  6. python比较两个列表
  7. 搭建rac对单实例的MAA
  8. NGINX小技巧--将所有目录和目录下所有文件分别给与不同的权限
  9. 关闭WIN10的UAC/自动更新/杀毒软件(兼容WIN7/8/8.1)
  10. Linux 文件名匹配