Difference between revisions of "GLAPI/glCopyBufferSubData"

From OpenGL Wiki
Jump to navigation Jump to search
m (Bot: Adding better formatting.)
 
(3 intermediate revisions by 2 users not shown)
Line 10: Line 10:
 
   void '''glCopyBufferSubData'''(GLenum {{param|readtarget}}, GLenum {{param|writetarget}}, GLintptr {{param|readoffset}}, GLintptr {{param|writeoffset}}, GLsizeiptr {{param|size}});
 
   void '''glCopyBufferSubData'''(GLenum {{param|readtarget}}, GLenum {{param|writetarget}}, GLintptr {{param|readoffset}}, GLintptr {{param|writeoffset}}, GLsizeiptr {{param|size}});
  
; readtarget
+
{{glapi buffertargets|name=readtarget|desc=Specifies the target from whose data store data should be read.}}
: Specifies the target from whose data store data should be read.
+
{{glapi buffertargets|name=writetarget|desc=Specifies the target to whose data store data should be written.}}
; writetarget
 
: Specifies the target to whose data store data should be written.
 
 
; readoffset
 
; readoffset
 
: Specifies the offset, in basic machine units, within the data store of {{param|readtarget}} from which data should be read.
 
: Specifies the offset, in basic machine units, within the data store of {{param|readtarget}} from which data should be read.
Line 25: Line 23:
 
'''glCopyBufferSubData''' copies part of the data store attached to {{param|readtarget}} to the data store attached to {{param|writetarget}}. The number of basic machine units indicated by {{param|size}} is copied from the source, at offset {{param|readoffset}} to the destination at {{param|writeoffset}}, also in basic machine units.
 
'''glCopyBufferSubData''' copies part of the data store attached to {{param|readtarget}} to the data store attached to {{param|writetarget}}. The number of basic machine units indicated by {{param|size}} is copied from the source, at offset {{param|readoffset}} to the destination at {{param|writeoffset}}, also in basic machine units.
  
{{param|readtarget}} and {{param|writetarget}} must be {{enum|GL_ARRAY_BUFFER}}, {{enum|GL_COPY_READ_BUFFER}}, {{enum|GL_COPY_WRITE_BUFFER}}, {{enum|GL_ELEMENT_ARRAY_BUFFER}}, {{enum|GL_PIXEL_PACK_BUFFER}}, {{enum|GL_PIXEL_UNPACK_BUFFER}}, {{enum|GL_TEXTURE_BUFFER}}, {{enum|GL_TRANSFORM_FEEDBACK_BUFFER}} or {{enum|GL_UNIFORM_BUFFER}}. Any of these targets may be used, although the targets {{enum|GL_COPY_READ_BUFFER}} and {{enum|GL_COPY_WRITE_BUFFER}} are provided specifically to allow copies between buffers without disturbing other GL state.
+
{{param|readtarget}} and {{param|writetarget}} must be valid buffer object binding targets. Any of these targets may be used, although the targets {{enum|GL_COPY_READ_BUFFER}} and {{enum|GL_COPY_WRITE_BUFFER}} are provided specifically to allow copies between buffers without disturbing other GL state.
  
 
{{param|readoffset}}, {{param|writeoffset}} and {{param|size}} must all be greater than or equal to zero. Furthermore, {{param|readoffset}} + {{param|size}} must not exceeed the size of the buffer object bound to {{param|readtarget}}, and {{param|readoffset}} + {{param|size}} must not exceeed the size of the buffer bound to {{param|writetarget}}. If the same buffer object is bound to both {{param|readtarget}} and {{param|writetarget}}, then the ranges specified by {{param|readoffset}}, {{param|writeoffset}} and {{param|size}} must not overlap.
 
{{param|readoffset}}, {{param|writeoffset}} and {{param|size}} must all be greater than or equal to zero. Furthermore, {{param|readoffset}} + {{param|size}} must not exceeed the size of the buffer object bound to {{param|readtarget}}, and {{param|readoffset}} + {{param|size}} must not exceeed the size of the buffer bound to {{param|writetarget}}. If the same buffer object is bound to both {{param|readtarget}} and {{param|writetarget}}, then the ranges specified by {{param|readoffset}}, {{param|writeoffset}} and {{param|size}} must not overlap.
Line 31: Line 29:
 
== Notes ==
 
== Notes ==
  
'''glCopyBufferSubData''' is available only if the GL version is 3.1 or greater.
+
The {{enum|GL_DISPATCH_INDIRECT_BUFFER}} and {{enum|GL_SHADER_STORAGE_BUFFER}} targets are available only if the GL version is 4.3 or greater.
 +
 
 +
The {{enum|GL_QUERY_BUFFER}} target is available only if the GL version is 4.4 or greater.
  
 
== Errors ==
 
== Errors ==
Line 49: Line 49:
 
== Copyright ==
 
== 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/ http://opencontent.org/openpub/].
+
Copyright © 2010-2013 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/ http://opencontent.org/openpub/].
  
 
[[Category:Core API Ref Buffer Objects|CopyBufferSubData]]
 
[[Category:Core API Ref Buffer Objects|CopyBufferSubData]]
 
[[Category:Core API Reference|CopyBufferSubData]]
 
[[Category:Core API Reference|CopyBufferSubData]]
 +
[[Category:Buffer Object API State Functions|CopyBufferSubData]]

Latest revision as of 09:51, 15 August 2013

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

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