Signature
glCopyBufferSubData(
GLenum (
readTarget
)
,
GLenum (
writeTarget
)
,
GLintptr (
readOffset
)
,
GLintptr (
writeOffset
)
,
GLsizeiptr (
size
)
)-> void
glCopyNamedBufferSubData(
GLuint (
readBuffer
)
,
GLuint (
writeBuffer
)
,
GLintptr (
readOffset
)
,
GLintptr (
writeOffset
)
,
GLsizeiptr (
size
)
)-> void
Parameters
Variables | Description |
---|---|
readTarget |
Specifies the target to which the source buffer object
is bound for
glCopyBufferSubData
|
writeTarget |
Specifies the target to which the destination buffer
object is bound for
glCopyBufferSubData
.
|
readBuffer |
Specifies the name of the source buffer object for
glCopyNamedBufferSubData
.
|
writeBuffer |
Specifies the name of the destination buffer object for
glCopyNamedBufferSubData
.
|
readOffset |
Specifies the offset, in basic machine units, within the
data store of the source buffer object at which data
will be read.
|
writeOffset |
Specifies the offset, in basic machine units, within the
data store of the destination buffer object at which
data will be written.
|
size |
Specifies the size, in basic machine units, of the data
to be copied from the source buffer object to the
destination buffer object.
|
Description
glCopyBufferSubData
and
glCopyNamedBufferSubData
copy part of the
data store attached to a source buffer object to the data store
attached to a destination buffer object. The number of basic
machine units indicated by
size
is copied
from the source at offset
readOffset
to
the destination at
writeOffset
.
readOffset
,
writeOffset
and
size
are in terms of basic machine units.
For
glCopyBufferSubData
,
readTarget
and
writeTarget
specify the targets to which
the source and destination buffer objects are bound, and must
each be one of the buffer binding targets in the following
table:
Any of these targets may be used, but 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 source buffer object, and $writeOffset+size$ must not
exceeed the size of the buffer bound to
writeTarget
. If the source and
destination are the same buffer object, then the source and
destination ranges must not overlap.
Notes
The
GL_DISPATCH_INDIRECT_BUFFER
and
GL_SHADER_STORAGE_BUFFER
targets are
available only if the GL version is 4.3 or greater.
The
GL_QUERY_BUFFER
target is available
only if the GL version is 4.4 or greater.
Errors
GL_INVALID_ENUM
is generated by
glCopyBufferSubData
if
readTarget
or
writeTarget
is not one of the buffer
binding targets listed above.
GL_INVALID_OPERATION
is generated by
glCopyBufferSubData
if zero is bound to
readTarget
or
writeTarget
.
GL_INVALID_OPERATION
is generated by
glCopyNamedBufferSubData
if
readBuffer
or
writeBuffer
is not the name of an
existing buffer object.
GL_INVALID_VALUE
is generated if any of
readOffset
,
writeOffset
or
size
is negative, if $readOffset + size$
is greater than the size of the source buffer object (its value
of
GL_BUFFER_SIZE
), or if $writeOffset +
size$ is greater than the size of the destination buffer object.
GL_INVALID_VALUE
is generated if the source
and destination are the same buffer object, and the ranges
$[readOffset,readOffset+size)$ and
$[writeOffset,writeOffset+size)$ overlap.
GL_INVALID_OPERATION
is generated if either
the source or destination buffer object is mapped with
glMapBufferRange
or
glMapBuffer
,
unless they were mapped with the
GL_MAP_PERSISTENT
bit set in the
glMapBufferRange
access
flags.
Version Support
glCopyBufferSubData | |
glCopyNamedBufferSubData |
See Also
Copyright
Copyright
2010-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/
.