GLCLEARBUFFERDATA(3G)

πŸ’– NAME

Yeah bestie, this is the glClearBufferData(3G) manual page β€” GLCLEARBUFFERDATA(3G) if we're yelling it in all caps β€” and the header is also doing a whole [FIXME: manual] placeholder moment. The actual assignment is iconic and simple: glClearBufferData, glClearNamedBufferData β€” fill a buffer object's data store with a fixed value. Periodt. πŸ’…

🧾 C SPECIFICATION

Okay so the C-level vibe is exactly this, and yes these signatures are literal:

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

Here's the parameter roll call, bestie β€” no skipped entries, no invented flags, fr fr.

  • target β€” specifies the target to which the buffer object is bound for glClearBufferData, and it must be one of the buffer binding targets in the following table:
    • 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 ✨

okay so bestie, picture this: glClearBufferData and glClearNamedBufferData are out here filling the entirety of a buffer object's data store with data straight from client memory. like, the whole thing. no crumbs. 🫢

Here's the vibe: the data starts life in a format you specify with format, in a data type you specify with type, and it gets read from the memory address given by data. then it's converted into the internal representation given by internalformat β€” and heads up, internalformat has to be one of these sized internal formats, no substitutions πŸ’…:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚             β”‚           β”‚            β”‚      β”‚   Component   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”€
β”‚ Sized       β”‚ Base Type β”‚ Components β”‚ Norm β”‚ 0 β”‚ 1 β”‚ 2 β”‚ 3 β”‚
β”‚ Internal    β”‚           β”‚            β”‚      β”‚   β”‚   β”‚   β”‚   β”‚
β”‚ Format      β”‚           β”‚            β”‚      β”‚   β”‚   β”‚   β”‚   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”€
β”‚ 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 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”˜

so that's the menu 🌸 β€” pick from that list or it's not happening.

Once it's converted, that data gets replicated throughout the buffer object's data store β€” like, the whole store gets the same treatment, no half-sending it. ✨ And here's a lil bonus: if data is NULL, then the buffer's data store just gets filled with zeros. clean slate energy, we love to see it 🧚


πŸ’€ ERRORS πŸ’€

ngl, these are the ways it can go off the rails β€” memorize them so you don't get caught lacking πŸ™ˆ

  • 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 to 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. (yes, the table. the whole table. go back up, bestie πŸ‘‘)
  • 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.
fr fr, that mapped-buffer one is the sneaky one β€” if any part of that range is mapped and it wasn't mapped with GL_MAP_PERSISTENT_BIT in the glMapBufferRange access flags, it's an GL_INVALID_OPERATION and your whole vibe check fails 😭

✨ VERSION SUPPORT ✨

Okay bestie, this is the vibe check on which OpenGL versions actually show up for these two functions πŸ’… the table in the original is basically a wall of dashes with three little checkmarks hiding at the end, so here's the tea in list form, no details skipped, periodt:

glClearBufferData β€” where it's supported across the OpenGL versions:

  • OpenGL 2.0 β€” nope, -
  • OpenGL 2.1 β€” nope, -
  • OpenGL 3.0 β€” nope, -
  • OpenGL 3.1 β€” nope, -
  • OpenGL 3.2 β€” nope, -
  • OpenGL 3.3 β€” nope, -
  • OpenGL 4.0 β€” nope, -
  • OpenGL 4.1 β€” nope, -
  • OpenGL 4.2 β€” nope, -
  • OpenGL 4.3 β€” βœ” yes!! she's here πŸŽ€
  • OpenGL 4.4 β€” βœ”
  • OpenGL 4.5 β€” βœ”

glClearNamedBufferData β€” same treatment:

  • OpenGL 2.0 β€” -
  • OpenGL 2.1 β€” -
  • OpenGL 3.0 β€” -
  • OpenGL 3.1 β€” -
  • OpenGL 3.2 β€” -
  • OpenGL 3.3 β€” -
  • OpenGL 4.0 β€” -
  • OpenGL 4.1 β€” -
  • OpenGL 4.2 β€” -
  • OpenGL 4.3 β€” -
  • OpenGL 4.4 β€” -
  • OpenGL 4.5 β€” βœ” only 4.5, she's a late bloomer but iconic 🌸
Ngl the way the two function names column and feature-name column are stacked in the original (Function / / / Feature / Name) is just the manpage being extra β€” the point is: glClearBufferData lands in 4.3, 4.4, 4.5, and glClearNamedBufferData is 4.5 only. Main character energy, both of them πŸ‘‘

🌈 SEE ALSO 🌈

  • glClearBufferSubData() β€” go read that one next, bestie, it's the sibling 🫢

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/.

Copyright Β© 2011-2014 Khronos Group


okay that's the whole page, you made it to the end, I'm so proud of you fr fr πŸ₯ΉπŸ’– this little beauty came from [FIXME: source], version stamped 08/09/2021, and she goes by GLCLEARBUFFERDATA(3G) β€” go clear some buffer data, you absolute icon βœ¨πŸ¦‹

πŸ“¦ where this page comes from