我有一個非常簡單的'hello world'webgl應用程序(臭名昭着的三角形),我決定改變每個頂點的顏色以使每個幀具有酷炫的顏色。我有這在我的渲染方法Webgl和飛鏢每幀更改頂點緩衝區中的數據
if (tick % 5 == 0) {
data[3] = rand.nextDouble();
data[4] = rand.nextDouble();
data[5] = rand.nextDouble();
data[3 + 6] = rand.nextDouble();
data[4 + 6] = rand.nextDouble();
data[5 + 6] = rand.nextDouble();
data[3 + 12] = rand.nextDouble();
data[4 + 12] = rand.nextDouble();
data[5 + 12] = rand.nextDouble();
}
其中數據是一個包含6個浮子3個頂點的Float32List。
我目前做這一塊上面
gl.bindBuffer(GL.ARRAY_BUFFER, vertexBuffer);
gl.bufferDataTyped(GL.ARRAY_BUFFER, data, GL.DYNAMIC_DRAW);
該做的工作,但不知何故,我有一種感覺,這是不正確的回答我的問題,並有可能影響性能的代碼之後。
嗯,它適合你的三角形。 對於更復雜的基元,你會想要使用分段着色器。編輯:你在談論你的「問題」,你的問題是什麼? – 2014-09-21 02:57:08
對於只有精靈的遊戲(每個精靈4個頂點),這很可能是一個簡單的渲染引擎。我可以想象我的精靈的xyz座標會經常改變,並且屏幕上可能會出現很多精靈 – 2014-09-21 03:01:04
現在我明白了,沒有你不想每幀更新你的頂點緩衝區來改變你的幾何體。平移,旋轉和縮放等轉換通常通過向着色器提交4x4矩陣並在頂點着色器內進行頂點轉換來完成。 – 2014-09-21 03:03:22