关联属性和缓冲对象

顶点着色器程序中的每个属性都指向顶点缓冲区对象.在创建顶点缓冲区对象之后,程序员必须将它们与顶点着色器程序的属性相关联.每个属性仅指向一个顶点缓冲区对象,从中提取数据值,然后将这些属性传递给着色器程序.

将顶点缓冲区对象与属性相关联顶点着色器程序,你必须按照下面给出的步骤减去;

  • 获取属性位置

  • 将属性指向顶点缓冲区对象

  • 启用属性

获取属性位置

WebGL提供了一个名为 getAttribLocation()的方法,它返回属性位置.它的语法如下 :

 
 ulong (Object ,string )

此方法接受顶点着色器程序对象和顶点着色器程序的属性值.

以下代码段显示了如何使用此方法.

  var  coordinatesVar = gl.getAttribLocation (shader_program,"coordinates");

这里, shader_program 是着色器程序的对象,坐标是顶点的属性着色程序.

将属性指向VBO

要将缓冲区对象分配给属性变量,WebGL提供了一个名为 vertexAttribPointer的方法()的.以下是此方法的语法 :

 
 void (,int ,enum ,bool ,long ,long )

此方法接受六个参数,将在下面讨论.

  • 位置 : 它指定属性变量的存储位置.在此选项下,您必须传递 getAttribLocation()方法返回的值.

  • 尺寸 : 它指定缓冲区对象中每个顶点的组件数.

  • 类型 : 它指定了数据类型.

  • 规范化 : 这是一个布尔值.如果为true,则非浮动数据归一化为[0,1];否则,它被归一化为[-1,1].

  • Stride : 它指定不同顶点数据元素之间的字节数,或默认步幅为零.

  • 偏移 : 它指定缓冲区对象中的偏移量(以字节为单位),以指示顶点数据的存储位置.如果数据从头开始存储,则偏移为0.

以下代码段显示如何使用程序中的 vertexAttribPointer() :

 
 gl.vertexAttribPointer(coordinatesVar,3,gl.FLOAT,,0,0);

启用属性

激活顶点着色器属性以访问顶点着色器中的缓冲区对象.对于此操作,WebGL提供 enableVertexAttribArray()方法.此方法接受属性的位置作为参数.以下是如何在程序中使用此方法 :

 
 gl.enableVertexAttribArray(coordinatesVar);