1. 程式人生 > >webgl第八課-繪製多個頂點的基礎知識

webgl第八課-繪製多個頂點的基礎知識

需要原始碼可以Q群:828202939 或者點選這裡  希望可以和大家一起學習、一起進步!!純手打!!

書籍是PDF電子檔,也在Q群裡,所有的課程原始碼在我上傳的資源裡面,本來想設定開源,好像不行!

如有錯別字或有理解不到位的地方,可以留言或者加微信15250969798,在下會及時修改!!!!!

本節主要是為了後面的一些稍微複雜的一些課程內容做鋪墊!

buffer object  (緩衝區物件)  它可以一次性地向著色器傳入多個頂點的資料。緩衝區物件是webgl系統中的一塊記憶體區域,我們可以一次性地向緩衝區物件填充大量的頂點資料,然後將這些資料儲存在其中,以供頂點著色器使用

一般分為以下幾個步驟:

1.建立緩衝區物件 gl.createBuffer()    //gl.daeletBuffer(buffer)可以刪除緩衝區物件

2.繫結緩衝區物件 gl.bindBuffer(target,buffer)

    target表示需要繫結緩衝區物件的目標物件,有以下幾個引數:

    gl.ARRAY_BUFFER 、gl.ELEMENT、ARRAY_BUFFER、buffer

3.將資料寫入緩衝區物件  gl.bufferData(target,data,usage)

   target    gl.ARRAY_BUFFER或者gl.ELEMENT_ARRAY_BUFFER

   data      寫入緩衝區物件的資料(型別化陣列)

   usage   表示程式如何使用儲存在緩衝區物件中的資料,這個引數主要幫助webgl進行效能優化,有gl.STATIC_DRAM、

                 gl.STREAM_DEAM、gl.DYNAMIC_DEAM

4.將緩衝區物件分配給一個attribute變數  gl.vertexAttribPointer(location,size,type,normalized,stride,offset)

將繫結到gl.ARRAY_BUFFER的緩衝區物件分配給由location指定的attribute變數

location   指定帶分配attribute變數的儲存位置

size         指定緩衝區中每個頂點的分量個數(1-4,xyzw)

type        指定的資料格式

normalize   傳入true或者false,表明是否將非浮點型的資料歸一化到【0,1】或者【-1,1】區間

stride      指定相鄰兩個頂點間的位元組數,預設為0

offset      指定緩衝區物件的偏移量,即attribute變數從緩衝區中的何處開始儲存

5.開啟attribute變數  gl.enableVertexAttribARRAY(a_POsition)

開啟location指定的attribute變數

a_Position   指定attribute變數的儲存位置

 

補充::::::

  補充一: gl.disableVertexAttribARRAY(a_POsition)

   關閉location指定的attribute

 

 補充二: 型別化陣列:Int8Array 、UInt8Arrray、Int16Array 、UInt16Arrray、Int32Array 、UInt32Arrray、Float32Array、Float64Arry

  方法:  get(index)  獲取第index個元素只     set(index, value ) 設定第index個元素的值為value

               set(array,offset) 從第offset個元素開始將陣列array中的值填充進去    length  陣列的長度

               BYTES_PER_ELEMENT  陣列中的每個元素所佔的位元組數

型別化陣列通過new來建立  ,不能直接使用【】使用

型別話陣列不支援push()和pop()方法

補充三:

gl.drawArrays(mode,first,count)

mode   指定繪製的方式

first      指定從哪個頂點開始繪製(整型數)

count   指定繪製需要用到多少個頂點(整型數)
 

基本上一些基礎的知識就是這些了!