GLAPI/glCopyBufferSubData

From OpenGL Wiki
Jump to navigation Jump to search
glCopyBufferSubData
Core in version 4.6
Core since version 3.1

glCopyBufferSubData: copy part of the data store of a buffer object to the data store of another buffer object

Function Definition

 void glCopyBufferSubData(GLenum readtarget​, GLenum writetarget​, GLintptr readoffset​, GLintptr writeoffset​, GLsizeiptr size​);
readtarget
Specifies the target from whose data store data should be read. The symbolic constant must be GL_ARRAY_BUFFER, GL_ATOMIC_COUNTER_BUFFER, GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, GL_DRAW_INDIRECT_BUFFER, GL_DISPATCH_INDIRECT_BUFFER, GL_ELEMENT_ARRAY_BUFFER, GL_PIXEL_PACK_BUFFER, GL_PIXEL_UNPACK_BUFFER, GL_QUERY_BUFFER, GL_SHADER_STORAGE_BUFFER, GL_TEXTURE_BUFFER, GL_TRANSFORM_FEEDBACK_BUFFER, or GL_UNIFORM_BUFFER.
writetarget
Specifies the target to whose data store data should be written. The symbolic constant must be GL_ARRAY_BUFFER, GL_ATOMIC_COUNTER_BUFFER, GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, GL_DRAW_INDIRECT_BUFFER, GL_DISPATCH_INDIRECT_BUFFER, GL_ELEMENT_ARRAY_BUFFER, GL_PIXEL_PACK_BUFFER, GL_PIXEL_UNPACK_BUFFER, GL_QUERY_BUFFER, GL_SHADER_STORAGE_BUFFER, GL_TEXTURE_BUFFER, GL_TRANSFORM_FEEDBACK_BUFFER, or GL_UNIFORM_BUFFER.
readoffset
Specifies the offset, in basic machine units, within the data store of readtarget​ from which data should be read.
writeoffset
Specifies the offset, in basic machine units, within the data store of writetarget​ to which data should be written.
size
Specifies the size, in basic machine units, of the data to be copied from readtarget​ to writetarget​.

Description

glCopyBufferSubData copies part of the data store attached to readtarget​ to the data store attached to writetarget​. The number of basic machine units indicated by size​ is copied from the source, at offset readoffset​ to the destination at writeoffset​, also in basic machine units.

readtarget​ and writetarget​ must be valid buffer object binding targets. Any of these targets may be used, although the targets GL_COPY_READ_BUFFER and GL_COPY_WRITE_BUFFER are provided specifically to allow copies between buffers without disturbing other GL state.

readoffset​, writeoffset​ and size​ must all be greater than or equal to zero. Furthermore, readoffset​ + size​ must not exceeed the size of the buffer object bound to readtarget​, and readoffset​ + size​ must not exceeed the size of the buffer bound to writetarget​. If the same buffer object is bound to both readtarget​ and writetarget​, then the ranges specified by readoffset​, writeoffset​ and size​ must not overlap.

Notes

glCopyBufferSubData is available only if the GL version is 3.1 or greater.

Errors

GL_INVALID_VALUE is generated if any of readoffset​, writeoffset​ or size​ is negative, if readoffset​ + size​ exceeds the size of the buffer object bound to readtarget​ or if writeoffset​ + size​ exceeds the size of the buffer object bound to writetarget​.

GL_INVALID_VALUE is generated if the same buffer object is bound to both readtarget​ and writetarget​ and the ranges [readoffset​, readoffset​ + size​) and [writeoffset​, writeoffset​ + size​) overlap.

GL_INVALID_OPERATION is generated if zero is bound to readtarget​ or writetarget​.

GL_INVALID_OPERATION is generated if the buffer object bound to either readtarget​ or writetarget​ is mapped.

See Also

glBindBuffer, glBufferData, glBufferSubData, glClearBufferSubData, glInvalidateBufferSubData, glMapBufferRange, glUnmapBuffer

Copyright

Copyright © 2010 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/.