gpu.buffers: grow-buffer helper word

db4
Joe Groff 2010-05-24 22:12:49 -07:00
parent 9fccc38994
commit db5998e121
2 changed files with 12 additions and 0 deletions

View File

@ -149,6 +149,10 @@ HELP: dynamic-upload
HELP: gpu-data-ptr
{ $class-description "This class is a union of the " { $link c-ptr } " and " { $link buffer-ptr } " classes. It represents a value that can be supplied either from CPU or GPU memory." } ;
HELP: grow-buffer
{ $values { "buffer" buffer } { "target-size" integer } }
{ $description "If the " { $link buffer-size } " of the given " { $link buffer } " is less than " { $snippet "target-size" } ", reallocates the buffer to a size large enough to accommodate " { $snippet "target-size" } " bytes. If the buffer is reallocated, the original contents are lost." } ;
HELP: index-buffer
{ $class-description "This " { $link buffer-kind } " declares that a " { $link buffer } "'s primary use will be to index vertex arrays." } ;
@ -243,6 +247,7 @@ ARTICLE: "gpu.buffers" "Buffer objects"
{ $subsections
allocate-buffer
allocate-byte-array
grow-buffer
update-buffer
read-buffer
copy-buffer

View File

@ -132,6 +132,13 @@ TYPED:: copy-buffer ( to-buffer-ptr: buffer-ptr from-buffer-ptr: buffer-ptr size
from-buffer-ptr offset>> to-buffer-ptr offset>>
size glCopyBufferSubData ;
: (grow-buffer-size) ( target-size old-size -- new-size )
[ 2dup > ] [ 2 * ] while nip ; inline
TYPED: grow-buffer ( buffer: buffer target-size: integer -- )
over buffer-size 2dup >
[ (grow-buffer-size) f allocate-buffer ] [ 3drop ] if ; inline
:: with-mapped-buffer ( ..a buffer access quot: ( ..a alien -- ..b ) -- ..b )
buffer bind-buffer :> target
target access gl-access glMapBuffer