Open GLES3.0中glVertexAttribPointer函数使用

在GLES 3.0中函数的参数形式如下所示:
glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);

例子:glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);

第一个参数:顶点属性的位置。
举个例子:顶点位置数组是要传递给顶点着色器的,顶点着色器的输入参数是:顶点属性。顶点可以有很多的属性,例如:顶点位置属性,顶点颜色属性等。
所以在顶点着色器源程序中会指定输入的顶点属性的location,如下所示:

   char vShaderStr[] =//顶点着色器source code
      "#version 300 es                          \n"
      "layout(location = 0) in vec4 aColor;     \n"
	  "layout(location = 1) in vec4 aPosition;  \n"
	  "out vec4 vColor;    						\n"
      "void main()                              \n"
      "{                                        \n"
	  "	  vColor = aColor;						\n"
      "   gl_Position = aPosition;              \n"
      "}                                        \n";

上面代码中location = 1用来表示传递给顶点着色器的第1个属性,这个属性是顶点着色器的位置属性。
所以:glVertexAttribPointer的第一个参数是标明此次传递的是哪个属性,在本例中,第一个参数设置为0表示传递给顶点着色器的是颜色属性,设置为1表示传递的是位置属性。

第二个参数指定顶点属性的大小。顶点位置属性是一个vec3,它由3个值组成,所以大小是3。

第三个参数指定顶点位置属性中元素的类型:float

第四个参数我设置为GL_FALSE,博文上面的解释不是很明白,先贴出来
第四个参数参数定义我们是否希望数据被标准化(Normalize)。如果我们设置为GL_TRUE,所有数据都会被映射到0(对于有符号型signed数据是-1)到1之间。我们把它设置为GL_FALSE。

第五个参数是:步长,因为我顶点位置向量中每个位置点由3个float类型组成,所以这里设置为3 * sizeof(float)

第六个参数:可以直接传递顶点位置向量的首地址

具体参考如下教程:
https://learnopengl-cn.github.io/01%20Getting%20started/04%20Hello%20Triangle/

我在理解第一个参数上出现了偏差,现在明白了,上面的教程写的非常好!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值