### Constructor

# Cogl Texture2D new_from_data

#### Declaration [src]

    CoglTexture*
    cogl_texture_2d_new_from_data (
      CoglContext* ctx,
      int width,
      int height,
      CoglPixelFormat format,
      int rowstride,
      const uint8_t* data,
      GError** error
    )

#### Description [src]

Creates a low-level `CoglTexture2D` texture based on data residing in memory.

This api will always immediately allocate GPU memory for the texture and upload the given data so that the `data` pointer does not need to remain valid once this function returns. This means it is not possible to configure the texture before it is allocated. If you do need to configure the texture before allocation (to specify constraints on the internal format for example) then you can instead create a `CoglBitmap` for your data and use `cogl_texture_2d_new_from_bitmap()` or use `cogl_texture_2d_new_with_size()` and then upload data using cogl_texture_set_data().

#### Parameters

`ctx`

  Type: `CoglContext`

  A `CoglContext`.

  The data is owned by the caller of the function.

`width`

  Type: `int`

  Width of texture in pixels.

`height`

  Type: `int`

  Height of texture in pixels.

`format`

  Type: `CoglPixelFormat`

  The `CoglPixelFormat` the buffer is stored in in RAM.

`rowstride`

  Type: `int`

  The memory offset in bytes between the starts of scanlines in `data`. A value of 0 will make Cogl automatically calculate `rowstride` from `width` and `format`.

`data`

  Type: An array of `uint8_t`

  Pointer the memory region where the source buffer resides.

  The data is owned by the caller of the function.

`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 constructor 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: `CoglTexture`

A newly allocated `CoglTexture2D`, or if the size is not supported (because it is too large or a non-power-of-two size that the hardware doesn’t support) it will return `NULL` and set `error`.

The caller of the function takes ownership of the data, and is responsible for freeing it.