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 forglClearBufferData, and it must be one of the buffer binding targets in the following table:GL_ARRAY_BUFFERβ vertex attributesGL_ATOMIC_COUNTER_BUFFERβ atomic counter storageGL_COPY_READ_BUFFERβ buffer copy sourceGL_COPY_WRITE_BUFFERβ buffer copy destinationGL_DISPATCH_INDIRECT_BUFFERβ indirect compute dispatch commandsGL_DRAW_INDIRECT_BUFFERβ indirect command argumentsGL_ELEMENT_ARRAY_BUFFERβ vertex array indicesGL_PIXEL_PACK_BUFFERβ pixel read targetGL_PIXEL_UNPACK_BUFFERβ texture data sourceGL_QUERY_BUFFERβ query result bufferGL_SHADER_STORAGE_BUFFERβ read-write storage for shadersGL_TEXTURE_BUFFERβ texture data bufferGL_TRANSFORM_FEEDBACK_BUFFERβ transform feedback bufferGL_UNIFORM_BUFFERβ uniform block storage
bufferβ specifies the name of the buffer object forglClearNamedBufferData.internalformatβ the internal format with which the data will be stored in the buffer object.formatβ the format of the data in memory addressed bydata.typeβ the type of the data in memory addressed bydata.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_ENUMis generated byglClearBufferDataif target is not one of the generic buffer binding targets.GL_INVALID_VALUEis generated byglClearBufferDataif no buffer is bound to target.GL_INVALID_OPERATIONis generated byglClearNamedBufferDataif buffer is not the name of an existing buffer object.GL_INVALID_ENUMis 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_OPERATIONis generated if any part of the specified range of the buffer object is mapped withglMapBufferRange()orglMapBuffer(), unless it was mapped with theGL_MAP_PERSISTENT_BITbit set in theglMapBufferRangeaccess flags.GL_INVALID_VALUEis 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 withGL_MAP_PERSISTENT_BITin theglMapBufferRangeaccess flags, it's anGL_INVALID_OPERATIONand 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:glClearBufferDatalands in4.3,4.4,4.5, andglClearNamedBufferDatais4.5only. Main character energy, both of them π
π SEE ALSO π
glClearBufferSubData()β go read that one next, bestie, it's the sibling π«Ά
π 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/.
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
- centos-stream 9: gl-manpages 1.1-24.20190306.el9 Β· MIT and Open Publication
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms