Javascript高級編程學習筆記(96)—— WebGL(2) 類型化視圖

類型化視圖

類型化視圖通常也被認爲是一種類型化數組.數組

由於其元素必須是某種特定的數據類型,類型化視圖都繼承自 Dataview函數

  • Int8Array: 表示8位二補整數(即二進制補數)
  • Uint8Array: 8位無符號整數
  • Int16Array: 16位二補數
  • Uint16Array: 16位無符號整數
  • Float32Array: 32位IEEE浮點值
  • Float64Array: 64位IEEE浮點值

與上面同名的構造函數都支持三個參數:spa

  1. ArrayBuffer
  2. 字節偏移量
  3. 字節長度

返回一個類型化視圖實例繼承

 

此外上面的每一個構造函數都有一個 BYTES_PER_ELEMENT屬性,用於表示類型化數組的每個元素須要多少字節.索引

如 Int8Array 的 BYTES_PER_ELEMENT 則爲1ip

 

並且若是傳入的第一個參數的爲一個數值 那麼構造函數會返回一個可以保存該數值個數元素的類型化數組基礎

傳入的若是是一個普通的數組,那麼構造函數則會將該普通數組轉爲一個類型化視圖構造函數

 

PS:若是傳入的值大於對應的字節數,那麼保存的值將是該值與當前大小最大值的模數據類型

例如想在16位無符號整數中保存 65537(最大能保存65535),那麼實際保存的值將是1二進制

 

使用類型化數組時能夠經過和普通數組相似的中括號的方式來迭代數組;

類型化數組還擁有一個方法 subarray()

該方法接收兩個參數

  1. 開始元素的索引
  2. 結束元素的索引

會返回一個基於當前類型視圖的子視圖

 

爲何這一篇文章和上一篇文章看起來和WebGl沒有什麼關係可是卻要仔細介紹呢?

由於WebGL中的着色器編寫語言是 GLSL

這種語言是一種類C語言,因此當咱們使用WebGL時須要將JavaScript中的"萬物皆可放"的數組轉爲某種單純的數組格式才能傳入着色器進行相應操做

因此類型化數組\視圖是WebGL中的基礎操做

相關文章
相關標籤/搜索