### Function

# Cogl blit_framebuffer

#### Declaration [src]

    gboolean
    cogl_blit_framebuffer (
      CoglFramebuffer* framebuffer,
      CoglFramebuffer* dst,
      int src_x,
      int src_y,
      int dst_x,
      int dst_y,
      int width,
      int height,
      GError** error
    )

#### Description [src]

`return` FALSE for an immediately detected error, TRUE otherwise.

This blits a region of the color buffer of the source buffer to the destination buffer. This function should only be called if the COGL_FEATURE_ID_BLIT_FRAMEBUFFER feature is advertised.

The source and destination rectangles are defined in offscreen framebuffer orientation. When copying between an offscreen and onscreen framebuffers, the image is y-flipped accordingly.

The two buffers must have the same value types (e.g. floating-point, unsigned int, signed int, or fixed-point), but color formats do not need to match. This limitation comes from OpenGL ES 3.0 definition of glBlitFramebuffer.

Note that this function differs a lot from the glBlitFramebuffer function provided by the GL_EXT_framebuffer_blit extension. Notably it doesn’t support having different sizes for the source and destination rectangle. This doesn’t seem like a particularly useful feature. If the application wanted to scale the results it may make more sense to draw a primitive instead.

The GL function is documented to be affected by the scissor. This function therefore ensure that an empty clip stack is flushed before performing the blit which means the scissor is effectively ignored.

The function also doesn’t support specifying the buffers to copy and instead only the color buffer is copied. When copying the depth or stencil buffers the extension on GLES2.0 only supports copying the full buffer which would be awkward to document with this API. If we wanted to support that feature it may be better to have a separate function to copy the entire buffer for a given mask.

The `c` error argument is optional, it can be NULL. If it is not NULL and this function returns FALSE, an error object with a code from COGL_SYSTEM_ERROR will be created.

#### Parameters

`framebuffer`

  Type: `CoglFramebuffer`

  The source `CoglFramebuffer`.

  The data is owned by the caller of the function.

`dst`

  Type: `CoglFramebuffer`

  The destination `CoglFramebuffer`.

  The data is owned by the caller of the function.

`src_x`

  Type: `int`

  Source x position.

`src_y`

  Type: `int`

  Source y position.

`dst_x`

  Type: `int`

  Destination x position.

`dst_y`

  Type: `int`

  Destination y position.

`width`

  Type: `int`

  Width of region to copy.

`height`

  Type: `int`

  Height of region to copy.

`error`

  Type: `GError **`

  The return location for a recoverable error.

  The argument can be `NULL`.
  If the return location is not `NULL`, then you must initialize it to a `NULL` `GError*`.
  The argument will be left initialized to `NULL` by the function if there are no errors.
  In case of error, the argument will be set to a newly allocated `GError`; the caller will take ownership of the data, and be responsible for freeing it.

#### Return value

Type: `gboolean`

No description available.