luminance-0.6: Type-safe, dependently-typed and stateless graphics framework

Copyright(C) 2015 Dimitri Sabadie
MaintainerDimitri Sabadie <>
Safe HaskellNone






Texture information and creation

class Texture t Source

Class of all textures.

Minimal complete definition

fromBaseTexture, toBaseTexture, textureTypeEnum, textureSize, textureStorage, transferTexelsSub, fillTextureSub

Associated Types

type TextureSize t :: * Source

Size of a texture. This is an associated type – type family – because the dimensionality of a texture relies on its type.

type TextureOffset t :: * Source

In order to index regions of texels in texture, we need another associated type – for the same dimensionality reason as for TextureSize.


createTexture :: forall m t. (MonadIO m, MonadResource m, Texture t) => TextureSize t -> Natural -> Sampling -> m t Source

'createTexture w h levels sampling' a new 'w'*'h' texture with levels levels. The format is set through the type.


defaultSampling :: Sampling Source

Default Sampling for convenience.

  defaultSampling = Sampling {
      samplingWrapS           = ClampToEdge
    , samplingWrapT           = ClampToEdge
    , samplingWrapR           = ClampToEdge
    , samplingMinFilter       = Linear
    , samplingMagFilter       = Linear
    , samplingCompareFunction = Nothing

Texture sampler customization

data Filter Source

Sampling filter. Nearest will sample the nearest texel at the sampling coordinates whilst Linear will perform linear interpolation with the texels nearby.



data Wrap Source

Wrap texture parameter. Such an object is used to tell how to sampling is performed when going out of the texture coordinates.

ClampToEdge will clamp the texture coordinates between in '[0,1]'. If you pass '1.1' or '31.456', in both cases you’ll end up with '1'. Same thing for negative values clamped to '0'.

Repeat will clamp the texture in '[0,1]' after applying a fract on the value, yielding a a repeated '[0,1]' pattern.





data CompareFunc Source

For textures that might require depth comparison, that type defines all the possible cases for comparison.

Texture operations

uploadSub :: forall a m t. (MonadIO m, Storable a, Texture t) => t -> TextureOffset t -> TextureSize t -> Bool -> Vector a -> m () Source

uploadSub tex offset size autolvl texels uploads data to a subpart of the texture’s storage. The offset is given with origin at upper-left corner, and size is the size of the area to upload to. autolvl is a Bool that can be used to automatically generate mipmaps.

fillSub :: forall a m t. (MonadIO m, Storable a, Texture t) => t -> TextureOffset t -> TextureSize t -> Bool -> Vector a -> m () Source

Fill a subpart of the texture’s storage with a given value.

Available textures

1D textures

data Texture1D f Source

A 1D texture.

Array texture

2D textures

data Texture2D f Source

A 2D texture.

Array texture

3D textures


data Cubemap f Source

A cubemap.

Array textures