OpenGL-ES 学习(14) ----顶点指定和基本图元的绘制

本节概述

绘制图形的第一步就是指定顶点坐标,可以每个顶点指定,也可以是用于所有顶点的常量,或者直接用顶点数组指定,OpenGL-ES 标准实现必须支持最少 16 个顶点属性;
顶点着色器处理图元顶点之后进入图元装配阶段,在这个阶段执行裁剪,透视分割和视口变换,往后会进入光栅化阶段;
光栅化是指将图元转换为一组二维片段的过程,这些片段最后会由FragmentShader 处理

顶点的指定

常量顶点属性和顶点数组

常量顶点属性对一个图元的所有顶点都相同,所以对图元的所有顶点都只需要指定一个值,可以用下面的函数指定:

顶点指定函数 说明
glVertexAttrib1f 加载顶点 (x,0.0,0.0,1.0)
glVertexAttrib2f 加载顶点 (x,y,0.0,1.0)
glVertexAttrib3f 加载顶点 (x,y,z,1.0)
glVertexAttrib4f 加载顶点 (x,y,z,w)
glVertexAttrib1fv 加载顶点 (x,0.0,0.0,1.0)
glVertexAttrib2fv 加载顶点 (x,y,0.0,1.0)
glVertexAttrib3fv 加载顶点 (x,y,z,1.0)
glVertexAttrib4fv 加载顶点 (x,y,z,w)

常量顶点属性提供标量/向量等价的功能

顶点数组

顶点数组指定每个顶点的属性,是保存在应用程序地址空间的缓冲区,使用下面的函数指定

函数 说明
glVertexAttribPointer 指定顶点数组
glVertexAttribIPointer 指定顶点数组

glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsize stride, const void *pointer)

  • GLuint index 指定通用顶点属性索引,从0到 最大支持索引数 -1
  • GLint size 所指定的分类数量 有效值 1~4
  • GLenum type 数据格式
  • GLboolean normalized 表示非浮点类型在转换为浮点数时是否应该规范化
  • GLsize stride 表示两个顶点之间的位移,如果stride 为 0,表示按照顺序存储
  • const void *pointer 顶点数据缓冲区的指针

重点关注的是

  • GLuint index : 和Shader 中的指定的 layout 一致
  • void *pointer : 指向顶点的指针
顶点属性的定义

定义顶点属性的坐标并且关联到一个属性索引上,
对应的代码:

GLfloat color[4] = {
   
    1.0f, 0.0f, 0.0f, 1.0f };
// 3 vertices, with (x,y,z) per-vertex
GLfloat vertexPos[3 * 3] = {
   
   
   0.0f,  0.5f, 0.0f, // v0
   -0.5f, -0.5f, 0.0f, // v1
   0.5f, -0.5f, 0.0f  // v2
};
glViewport ( 0, 0, esContext->width, esContext->height );
glClear ( GL_COLOR_BUFFER_BIT );
glUseProgram ( userData->p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值