copy-framebuffer ( to-fb-rect: framebuffer-rect from-fb-rect: framebuffer-rect depth? stencil? filter: texture-filter -- ) (original) (raw)
Vocabulary
gpu.framebuffers
Inputs
to-fb-rect | a framebuffer-rect |
---|---|
from-fb-rect | a framebuffer-rect |
depth? | a boolean |
stencil? | a boolean |
filter | a texture-filter |
Outputs
None
Word description
Copies the rectangular region from-fb-rect to to-fb-rect. If depth? is true, depth values are also copied, and if stencil? is true, so are stencil values. If the rectangle sizes do not match, the region is scaled using nearest-neighbor or linear filtering based on filter.
Notes
This word requires OpenGL 3.0 or one of the GL_ARB_framebuffer_object or GL_EXT_framebuffer_blit extensions.
Definition
USING: accessors gpu.framebuffers.private gpu.textures.private
kernel math math.rectangles opengl.gl sequences typed ;
TYPED:: copy-framebuffer
( to-fb-rect: framebuffer-rect from-fb-rect: framebuffer-rect depth? stencil? filter: texture-filter -- )
GL_DRAW_FRAMEBUFFER to-fb-rect framebuffer>>
framebuffer-handle glBindFramebuffer to-fb-rect
[ framebuffer>> ] [ attachment>> ] bi gl-attachment
glDrawBuffer
GL_READ_FRAMEBUFFER from-fb-rect framebuffer>>
framebuffer-handle glBindFramebuffer from-fb-rect
[ framebuffer>> ] [ attachment>> ] bi gl-attachment
glReadBuffer to-fb-rect attachment>>
[ GL_COLOR_BUFFER_BIT ] [ 0 ] if depth?
[ GL_DEPTH_BUFFER_BIT bitor ] when stencil?
[ GL_STENCIL_BUFFER_BIT bitor ] when
:> mask from-fb-rect rect>> rect-extent [ first2 ] bi@
to-fb-rect rect>> rect-extent [ first2 ] bi@
mask filter gl-mag-filter glBlitFramebuffer ;