WEBGL编程指南之缓冲区的使用

1. 创建缓冲区的步骤

  1. 创建缓冲区对象(gl.createBuffer()
  2. 绑定缓冲区对象(gl.bindBuffer())
  3. 将数据写入缓冲区(gl.bufferData()
  4. 将缓冲区对象分配给一个attribute变量(gl.vertexAttribute());
  5. 开启attribute变量(gl.enableVertexAttribArray())。
//这是一种特殊的数组
var vertices=new Float32Array([0.0,0.5,-0.5,-0.5,0.5,-0.5])
var vertexBuffer=gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER,vertexBuffer);
gl.bufferData(gl.ARRAY_BUFFER,vertices,gl_STATIC_DRAW);
var a_Position=gl.getAttributeLocation(gl.program,'a_Position');
gl.vertexAttribPointer(a_Position,2,gl_FLOAT,false,0,0);
gl.enableVertexAttributArray(a_Position);

2.函数说明

1.gl.createBuffer(),无参数,返回缓冲区对象。
2.gl.bindBuffer(target,buffer),buffer为开始创建的缓冲区对象。target为gl.ARRAY_BUFFER表示缓冲区中包含了顶点数据。或是gl.ELEMENT_ARRAY_BUFFER表示缓冲区中包含了顶点的索引。返回buffer
3.gl.bufferData(target,data,usage),target为gl.ARRAY_BUFFER或是gl.ELEMENT_ARRAY_BUFFER。usage为gl.STATIC_DRAW表示只会向缓冲区写入一次数据,但需要绘制很多次。gl.STREAM_DRAM表示只会向缓冲区写入一次数据然后绘制若干次。gl.DYNAMIC_DRAm表示会想缓冲区写入多次数据并且绘制多次。data为类型化数组有如Int8Array,UInt8Array,Float32Array,Float64Array等,主要为了提高处理效率。
4.gl.vertexAttribPointer(location,size,type,nomalized,stride,offset)
size为每个顶点的分量个数1-4,缺失的补1.
type为数据类型:gl.UNSIGNED_BYTE,gl.SHORT,gl.INT等
stride:指定相邻顶点的间的字节数。
offset:指定缓冲区对象中的偏移量。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容