glClearBufferSubData

来源:互联网 发布:学弹钢琴软件 编辑:程序博客网 时间:2024/06/06 00:17

glClearBufferSubData

glCearBufferSubData 用一个固定的值填充缓冲区对象的一部分(或者全部)

OpenGL >= 4.3void glClearBufferSubData(      GLenum target,    GLenum internalformat,    GLintptr offset,    GLsizeiptr size,    GLenum format,    GLenum type,    const void * data);

参数:
target : 指定缓冲区对象的类型,具体类型参考 glBufferData
internalformat : 指定缓冲区对象中的数据的内部存储格式
offset:指定需要替换数据的偏移量(以字节计算)
size:指定需要填充的数据的大小(以字节计算)
format:指定内存中的数据的格式
type:指定类存中数据的类型
data:指定内存中的数据,用来替换掉缓冲区对象中的数据

上述参数中有几个概念需要明确:
1. internalformat: 用来表述缓冲区对象中的数据是那种形式的,可选的取值有:

内部格式 数据类型 组成成分 是否单位化 成分(0,1,2,3) GL_R8 ubyte 1 YES R 0 0 1 GL_R16 ushort 1 YES R 0 0 1 GL_R16F half 1 NO R 0 0 1 GL_R32F float 1 NO R 0 0 1 GL_R8I byte 1 NO R 0 0 1 GL_R16I short 1 NO R 0 0 1 GL_R32I int 1 NO R 0 0 1 GL_R8UI ubyte 1 NO R 0 0 1 GL_R16UI ushort 1 NO R 0 0 1 GL_R32UI uint 1 NO R 0 0 1 GL_RG8 ubyte 2 YES R G 0 1 GL_RG16 ushort 2 YES R G 0 1 GL_RG16F half 2 NO R G 0 1 GL_RG32F float 2 NO R G 0 1 GL_RG8I byte 2 NO R G 0 1 GL_RG16I short 2 NO R G 0 1 GL_RG32I int 2 NO R G 0 1 GL_RG8UI ubyte 2 NO R G 0 1 GL_RG16UI ushort 2 NO R G 0 1 GL_RG32UI uint 2 NO R G 0 1 GL_RGB32F float 3 NO R G B 1 GL_RGB32I int 3 NO R G B 1 GL_RGB32UI uint 3 NO R G B 1 GL_RGBA8 uint 4 YES R G B A GL_RGBA16 short 4 YES R G B A GL_RGBA16F half 4 NO R G B A GL_RGBA32F float 4 NO R G B A GL_RGBA8I byte 4 NO R G B A GL_RGBA16I short 4 NO R G B A GL_RGBA32I int 4 NO R G B A GL_RGBA8UI ubyte 4 NO R G B A GL_RGBA16UI ushort 4 NO R G B A GL_RGBA32UI uint 4 NO R G B A

format和type指定了data中的格式类型
format : 可以取值
GL_RED, GL_RG, GL_RGB,GL_RGBA 来代表一维、二维、三维或四维的数据

type: 指定了数据的类型是GL_FLOAT或者GL_INT或者GL_UNSIGNED_BYTE等

data: 指定用来填充的数据,如果是NULL那么该缓冲区由offset和size指定的区域会被0填充

1 0
原创粉丝点击