WebGL中相关Buffer的使用
2019-10-15 本文已影响0人
不决书
1、createBuffer() 在显存中创建缓存区
triangleBuffer = webgl.createBuffer();
2、bindBuffer() 将创建好的缓存区绑定到WebGL对象上
webgl.bindBuffer(webgl.ARRAY_BUFFER, triangleBuffer);
3、bufferData() 上传数据到缓存区
webgl.bufferData(webgl.ARRAY_BUFFER, new Float32Array(jsArrayData), webgl.STATIC_DRAW);
数据类型,可以是 gl.ARRAY_BUFFER
, gl.ELEMENT_ARRAY_BUFFER
,本例中使用的是 gl.ARRAY_BUFFER
-
缓冲类型,有这么几种可以供我们选择
GL_STREAM_DRAW
,GL_STATIC_DRAW
,GL_DYNAMIC_DRAW
-
缓冲区的数据偶尔变动用
GL_STREAM_DRAW
,缓冲区的数据不变用GL_STATIC_DRAW,缓冲区数据经常变动用GL_DYNAMIC_DRAW (红色是WebGL中常用的)
// WebGL1:
void gl.bufferSubData(target, offset, ArrayBuffer srcData);
void gl.bufferSubData(target, offset, ArrayBufferView srcData);
这个是用来做缓存数据的部分更新, target :同上数据类型,offset offset单位是字节,意思是从
BufferDataSource? data所指向的数组或缓冲的首地址偏移offset个字节开始读数据,上面代码offset是0,代表是从数组或缓冲区首地址开始读数据,若offset=2时,如下图所示:

srcData:是需要更新的数据