1. 程式人生 > >原生webgl學習(九) webgl動畫:不斷改變頂點顏色

原生webgl學習(九) webgl動畫:不斷改變頂點顏色

這一節我們通過動畫來實現頂點顏色的變化,首先對於顏色資料變化的實現,可以用Math.random()來實現,如下函式:

 function randomColor() {
    return [
        1.0, 0.0, 0.0, 1.0,
        1.0, Math.sin(Math.random()), Math.cos(Math.random()), 1.0,
        Math.sin(Math.random()), Math.cos(Math.random()), 1.0, 1.0,
        0.0, 0.0, 1.0, 1.0
    ]
  }

這個顏色讀者可以根據需求設定;

其次,動畫的實現,我們利用requestAnimationFrame這個函式來實現對場景重複不斷的渲染:

function render() {
     color = randomColor();//改變顏色
     drawScene(gl, program, color);//繪製
     requestAnimationFrame(render);//迴圈渲染
}

 最後,本文的示例分別實現了gl.TRIANGLES、gl.TRIANGLE_FAN、gl.TRIANGLE_STRIP繪製三角形,對於這三個繪製三角形的方法可參考:https://blog.csdn.net/qq_37338983/article/details/73742119

的介紹,實現這三個示例的程式碼分別是chapter-04中的change-vertex-color.html、change-vertex-color-fan.html和change-vertex-color-strip.html。詳細程式碼讀者可自行下載研究。最終幾個例子不同的程式碼為:

gl.drawArrays(gl.TRIANGLES, 0, vertices.length / 2);

gl.drawArrays(gl.TRIANGLE_FAN, 0, vertices.length / 2);

gl.drawArrays(gl.TRIANGLE_STRIP, 0, vertices.length / 2);


實現效果: