WebGL关联属性和缓冲区对象

在顶点着色器程序中的每个属性点为顶点缓冲区对象。创建顶点缓冲区对象之后,程序员必须将它们与顶点着色器程序的属性相关联。每个属性点只有一个顶点缓冲对象,从它们中提取数据值,然后将这些属性传递给着色器程序。
到了顶点缓冲对象的顶点着色器程序的属性联系起来,必须按照下面的步骤 -
  • 获取属性的位置
  • 点属性顶点缓冲区对象
  • 启用属性

获取属性的位置

WebGL提供一种方法 getAttribLocation(),它返回属性的位置。它的语法如下-
ulong getAttribLocation(Object program, string name)
此方法接受顶点着色器的程序对象和顶点着色器程序的属性值。
下面的代码片段展示了如何使用此方法。
var coordinatesVar = gl.getAttribLocation(shader_program, "coordinates"); 
这里,shader_program是着色器程序对象和坐标是顶点着色器程序的属性。

指向属性到VBO

要分配缓冲对象的属性变量,WebGL提供了一个名为vertexAttribTutorialser()的方法。下面是该方法的语法-
void vertexAttribTutorialser(location, int size, enum type, bool normalized, long stride, long offset)
此方法接受六个参数,它们讨论下面。
  • Location − 它指定一个属性变量的存储位置。根据这个方案,必须通过由getAttribLocation()方法返回的值

  • Size − 它指定在缓冲对象每顶点部件的数量

  • Type − 它指定数据的类型

  • Normalized − 这是一个布尔值。如果为真,非浮动数据被归一化到[0,1]。否则,它被归一化到[-1,1]。

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

  • Offset − 它指定在缓冲器对象,以指示数据从顶点的哪个存储字节偏移(字节)。如果数据是从开始(beginning)存储的,偏移量(offset)为0。

下面的片段展示了如何在程序中使用 vertexAttribTutorialser() -
gl.vertexAttribTutorialser(coordinatesVar, 3, gl.FLOAT, false, 0, 0);

启用属性

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

上一篇: WebGL着色器 下一篇: WebGL绘制模型