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繪製模型