glClearBufferSubData

glClearBufferSubData

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

OpenGL >= 4.3
void 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_R8ubyte1YESR 0 0 1
GL_R16ushort1YESR 0 0 1
GL_R16Fhalf1NOR 0 0 1
GL_R32Ffloat1NOR 0 0 1
GL_R8Ibyte1NOR 0 0 1
GL_R16Ishort1NOR 0 0 1
GL_R32Iint1NOR 0 0 1
GL_R8UIubyte1NOR 0 0 1
GL_R16UIushort1NOR 0 0 1
GL_R32UIuint1NOR 0 0 1
GL_RG8ubyte2YESR G 0 1
GL_RG16ushort2YESR G 0 1
GL_RG16Fhalf2NOR G 0 1
GL_RG32Ffloat2NOR G 0 1
GL_RG8Ibyte2NOR G 0 1
GL_RG16Ishort2NOR G 0 1
GL_RG32Iint2NOR G 0 1
GL_RG8UIubyte2NOR G 0 1
GL_RG16UIushort2NOR G 0 1
GL_RG32UIuint2NOR G 0 1
GL_RGB32Ffloat3NOR G B 1
GL_RGB32Iint3NOR G B 1
GL_RGB32UIuint3NOR G B 1
GL_RGBA8uint4YESR G B A
GL_RGBA16short4YESR G B A
GL_RGBA16Fhalf4NOR G B A
GL_RGBA32Ffloat4NOR G B A
GL_RGBA8Ibyte4NOR G B A
GL_RGBA16Ishort4NOR G B A
GL_RGBA32Iint4NOR G B A
GL_RGBA8UIubyte4NOR G B A
GL_RGBA16UIushort4NOR G B A
GL_RGBA32UIuint4NOR 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填充

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值