Rectangle textures (non-normalized coordinates)

Rectangle textures (non-normalized coordinates) — Functions for creating and manipulating rectangle textures for use with non-normalized coordinates.

Synopsis

                    CoglTextureRectangle;
#define             cogl_texture_rectangle_new_with_size
#define             cogl_is_texture_rectangle

Description

These functions allow low-level "rectangle" textures to be allocated. These textures are never constrained to power-of-two sizes but they also don't support having a mipmap and can only be wrapped with COGL_PIPELINE_WRAP_MODE_CLAMP_TO_EDGE.

The most notable difference between rectangle textures and 2D textures is that rectangle textures are sampled using un-normalized texture coordinates, so instead of using coordinates (0,0) and (1,1) to map to the top-left and bottom right corners of the texture you would instead use (0,0) and (width,height).

The use of non-normalized coordinates can be particularly convenient when writing glsl shaders that use a texture as a lookup table since you don't need to upload separate uniforms to map normalized coordinates to texels.

If you want to sample from a rectangle texture from GLSL you should use the sampler2DRect sampler type.

Applications wanting to use CoglTextureRectangle should first check for the COGL_FEATURE_ID_TEXTURE_RECTANGLE feature using cogl_has_feature().

Details

CoglTextureRectangle

typedef struct _CoglTextureRectangle CoglTextureRectangle;

cogl_texture_rectangle_new_with_size

#define             cogl_texture_rectangle_new_with_size

Allocates a new CoglRectangle texture with a given width, height and internal_format. This texture is a low-level texture that the GPU can sample from directly unlike high-level textures such as CoglTexture2DSliced and CoglAtlasTexture.

Note

If you want to sample from a rectangle texture from GLSL you should use the sampler2DRect sampler type.

Note

Applications wanting to use CoglTextureRectangle should first check for the COGL_FEATURE_ID_TEXTURE_RECTANGLE feature using cogl_has_feature().

context :

A CoglContext pointer

width :

The texture width to allocate

height :

The texture height to allocate

internal_format :

The desired internal texture format

error :

An optional GError pointer for reporting exceptions

Returns :

A pointer to a newly allocated CoglRectangle texture or if the size was too large or there wasn't enough memory NULL is returned and error set.

Since 1.10

Stability Level: Unstable


cogl_is_texture_rectangle

#define cogl_is_texture_rectangle cogl_is_texture_rectangle_EXP

Gets whether the given object references an existing CoglTextureRectangle object.

object :

A CoglObject

Returns :

TRUE if the object references a CoglTextureRectangle, FALSE otherwise.