動態更新——緩衝區物件
昨天學習瞭如果初始化著色器,費了半天勁,並且褲子都脫了,才繪製出一個點,還是個靜止的點。我們前端要做就做互動,不能動態的互動的東西,恕我直言,都是辣雞...好了不開玩笑了,開始讓WebGL動起來了吧...動詞大詞...
無論什麼方法,第一步都是獲取 GLSL 中定義的變數的位置,方法就是從程式物件那裡取得
var programObj = gl.createProgram();
... gl.linkProgram() & gl.useProgram();
var aVertexPosition = gl.getAttribLocation( programObj ,'aVertexPosition');
這樣就可以獲取到 aVertexPosition 這個變數的位置了,然後可以利用這個變數位置操作 GLSL 中的變數了
方法一:
gl.vertexAttrib3f(aVertexPosition, x, y , 0.0);
這種方法每次只能改變一個變數,如果想要畫多個點就要改變一次 gl.drawArrays() 一次,並且我發現,凡是回撥的呼叫 gl.drawArrays 整個的canvas都會重新整理,不知道為什麼,如果想要畫非常複雜的 3D 圖形怎麼辦呢,這種方法肯定不行,這就要用到緩衝區物件了,利用 Javascript 中的型別陣列可以一次傳入大量資料給緩衝區,然後再進行圖形繪製
方法二:流程如圖
當然流程稍微複雜,與著色器初始化那種環環相扣不一樣,這個流程中很多呼叫看起來並沒有什麼關係,那麼WebGL在開始渲染圖形前到底做了些什麼?暫時還不是很瞭解,不過這樣就可以簡化複雜資料的傳入,而且還可以用同一個型別陣列傳入多種資料。
後面很多都要用到緩衝區物件。
相關文章
- JavaScript WebGL 幀緩衝區物件JavaScriptWeb物件
- 緩衝區分析
- C 標準庫IO緩衝區和核心緩衝區的區別
- Java NIO:緩衝區Java
- getchar緩衝區
- Java NIO 之緩衝區Java
- Unity深度緩衝區指令Unity
- Java整數緩衝區Java
- nginx 緩衝區構造Nginx
- stdio流緩衝區
- 《高效學習OpenGL》之緩衝區物件 glGenBuffers(), glBindBuffer(), glBufferData(),glMapBuffer()物件
- JavaScript 緩衝運動JavaScript
- 緩衝區溢位攻擊初學者手冊(更新版)
- 三態緩衝器!74系列晶片的型號區別…晶片
- 用apache JCS實現物件緩衝Apache物件
- Node.js Buffer(緩衝區)Node.js
- PHP的輸出緩衝區PHP
- Linux 命令 管道 緩衝區Linux
- log buffer(日誌緩衝區)
- Java NIO 之 Buffer(緩衝區)Java
- Java NIO2:緩衝區Java
- 緩衝區溢位實驗
- 緩衝區溢位小程式分析
- PHP 輸出緩衝區應用PHP
- Java-NIO之Buffer(緩衝區)Java
- Redis效能篇(五)Redis緩衝區Redis
- 8、Node.js Buffer(緩衝區)Node.js
- node.js中緩衝區–BufferNode.js
- C語言緩衝區問題C語言
- WebGIS 8-1 緩衝區分析Web
- cuug 資料緩衝區調優
- Buffer Cache Size(資料緩衝區)
- 自動處理管理駕駛艙衝緩衝
- 調節Oracle資料緩衝區引數,緩衝整個資料庫(轉)Oracle資料庫
- MySQL中讀頁緩衝區buffer poolMySql
- 《Lua-in-ConTeXt》10:緩衝區魔法Context
- Java NIO 緩衝區學習筆記Java筆記
- 緩衝區的個人理解!(終結版)