## Name

glClearBufferData, glClearNamedBufferData — fill a buffer object's data store with a fixed value

## C Specification

`void glClearBufferData(` | GLenum target,
| GLenum internalformat,
| GLenum format,
| GLenum type,
| const void * data`)`;

`void glClearNamedBufferData(` | GLuint buffer,
| GLenum internalformat,
| GLenum format,
| GLenum type,
| const void *data`)`;

## Parameters

`target`

  Specifies the target to which the buffer object is bound for `glClearBufferData`, which must must be one of the buffer binding targets in the following table:

  Buffer Binding Target | Purpose
  --- | ---
  `GL_ARRAY_BUFFER` | Vertex attributes
  `GL_ATOMIC_COUNTER_BUFFER` | Atomic counter storage
  `GL_COPY_READ_BUFFER` | Buffer copy source
  `GL_COPY_WRITE_BUFFER` | Buffer copy destination
  `GL_DISPATCH_INDIRECT_BUFFER` | Indirect compute dispatch commands
  `GL_DRAW_INDIRECT_BUFFER` | Indirect command arguments
  `GL_ELEMENT_ARRAY_BUFFER` | Vertex array indices
  `GL_PIXEL_PACK_BUFFER` | Pixel read target
  `GL_PIXEL_UNPACK_BUFFER` | Texture data source
  `GL_QUERY_BUFFER` | Query result buffer
  `GL_SHADER_STORAGE_BUFFER` | Read-write storage for shaders
  `GL_TEXTURE_BUFFER` | Texture data buffer
  `GL_TRANSFORM_FEEDBACK_BUFFER` | Transform feedback buffer
  `GL_UNIFORM_BUFFER` | Uniform block storage

`buffer`

  Specifies the name of the buffer object for `glClearNamedBufferData`.

`internalformat`

  The internal format with which the data will be stored in the buffer object.

`format`

  The format of the data in memory addressed by `data`.

`type`

  The type of the data in memory addressed by `data`.

`data`

  The address of a memory location storing the data to be replicated into the buffer's data store.

## Description

`glClearBufferData` and `glClearNamedBufferData` fill the entirety of a buffer object's data store with data from client memory.

Data, initially supplied in a format specified by `format` in data type `type` is read from the memory address given by `data` and converted into the internal representation given by `internalformat`, which must be one of the following sized internal formats:

|  |  |  | Component
--- | --- | --- | --- | ---
Sized Internal Format | Base Type | Components | Norm | 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

This converted data is then replicated throughout the buffer object's data store. If `data` is NULL, then the buffer's data store is filled with zeros.

## Errors

`GL_INVALID_ENUM` is generated by `glClearBufferData` if `target` is not one of the generic buffer binding targets.

`GL_INVALID_VALUE` is generated by `glClearBufferData` if no buffer is bound `target`.

`GL_INVALID_OPERATION` is generated by `glClearNamedBufferData` if `buffer` is not the name of an existing buffer object.

`GL_INVALID_ENUM` is generated if `internalformat` is not one of the valid sized internal formats listed in the table above.

`GL_INVALID_OPERATION` is generated if any part of the specified range of the buffer object is mapped with glMapBufferRange or glMapBuffer, unless it was mapped with the `GL_MAP_PERSISTENT_BIT` bit set in the `glMapBufferRange` `access` flags.

`GL_INVALID_VALUE` is generated if `format` is not a valid format, or `type` is not a valid type.

## Version Support

| OpenGL Version
--- | ---
Function / Feature Name | 2.0 | 2.1 | 3.0 | 3.1 | 3.2 | 3.3 | 4.0 | 4.1 | 4.2 | 4.3 | 4.4 | 4.5
`glClearBufferData` | - | - | - | - | - | - | - | - | - | ✔ | ✔ | ✔
`glClearNamedBufferData` | - | - | - | - | - | - | - | - | - | - | - | ✔

## See Also

glClearBufferSubData.

## Copyright

Copyright © 2011-2014 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.