缓冲区对象
创建:
Gluint pixBuffObjs[1];
glGenBuffers(1, pixBuffObjs);
绑定:
glBindBuffer(GL_PIXEL_PACK_BUFFER, pixBuffObjs[0]);
缓冲区对象的绑定点有:
Target Name | Description |
---|---|
GL_ARRAY_BUFFER | 用于存储顶点属性,比如颜色、位置、纹理坐标等 |
GL_COPY_READ_BUFFER | glCopyBufferSubData 的数据源 |
GL_COPY_WRITE_BUFFER | glCopyBufferSubData 的目标 |
GL_ELEMENT_ARRAY_BUFFER | 用于保存 glDrawElements, glDrawRangeElements, and glDrawElementsInstanced 的索引 |
GL_PIXEL_PACK_BUFFER | 读取像素数据的源缓冲区(比如 glReadPixels) |
GL_PIXEL_UNPACK_BUFFER | 纹理更新的源缓冲区,比如 glTexImage1D, glTexImage2D, glTexImage3D, glTexSubImage1D, glTexSubImage2D, and glTexSubImage3D |
GL_TEXTURE_BUFFER | Buffer accessible to shaders through texel fetches |
GL_TRANSFORM_FEEDBACK_BUFFER | Buffer written to by a transform feedback vertex shader |
GL_UNIFORM_BUFFER | Uniform values accessible to shaders |
删除:
glDeleteBuffers(1, pixBuffObjs);
填充缓冲区:
glBufferData(GL_PIXEL_PACK_BUFFER, pixelDataSize, pixelData, GL_DYNAMIC_COPY);
在使用 glBufferData 之前,必须先进行绑定。如果要分配一个特定大小的缓冲区,而不需要对它进行填充,则 pixelData 可以为 NULL。第四个参数可能的值为:
Buffer Usage | Description |
---|---|
GL_STREAM_DRAW | 缓冲区内容将由应用程序设置一次,并且不经常用于绘图 |
GL_STREAM_READ | 缓冲区内容将被设置一次,作为 |