OpenGL-2.2.3.1: A binding for the OpenGL graphics system

Portability | portable
Stability | stable
Maintainer | sven.panne@aedion.de
Safe Haskell | None

Graphics.Rendering.OpenGL.GL.VertexSpec

Contents

- Vertex Coordinates
- Auxiliary Vertex Attributes
  - Texture Coordinates
  - Normal
  - Fog Coordinate
  - Color and Secondary Color
- Generic Vertex Attributes
- Texture Units

Description

This module corresponds to section 2.7 (Vertex Specification) of the OpenGL 2.1 specs.

Synopsis

- class Vertex a where
  - vertex :: a -> IO ()
  - vertexv :: Ptr a -> IO ()
- class VertexComponent a
- newtype Vertex1 a = Vertex1 a
- data Vertex2 a = Vertex2 !a !a
- data Vertex3 a = Vertex3 !a !a !a
- data Vertex4 a = Vertex4 !a !a !a !a
- currentTextureCoords :: StateVar (TexCoord4 GLfloat)
- class TexCoord a where
  - texCoord :: a -> IO ()
  - texCoordv :: Ptr a -> IO ()
  - multiTexCoord :: TextureUnit -> a -> IO ()
  - multiTexCoordv :: TextureUnit -> Ptr a -> IO ()
- class TexCoordComponent a
- newtype TexCoord1 a = TexCoord1 a
- data TexCoord2 a = TexCoord2 !a !a
- data TexCoord3 a = TexCoord3 !a !a !a
- data TexCoord4 a = TexCoord4 !a !a !a !a
- currentNormal :: StateVar (Normal3 GLfloat)
- class Normal a where
  - normal :: a -> IO ()
  - normalv :: Ptr a -> IO ()
- class NormalComponent a
- data Normal3 a = Normal3 !a !a !a
- currentFogCoord :: StateVar (FogCoord1 GLfloat)
- class FogCoord a where
  - fogCoord :: a -> IO ()
  - fogCoordv :: Ptr a -> IO ()
- class FogCoordComponent a
- newtype FogCoord1 a = FogCoord1 a
- rgbaMode :: GettableStateVar Bool
- currentColor :: StateVar (Color4 GLfloat)
- class Color a where
  - color :: a -> IO ()
  - colorv :: Ptr a -> IO ()
- currentSecondaryColor :: StateVar (Color3 GLfloat)
- class SecondaryColor a where
  - secondaryColor :: a -> IO ()
  - secondaryColorv :: Ptr a -> IO ()
- class ColorComponent a
- data Color3 a = Color3 !a !a !a
- data Color4 a = Color4 !a !a !a !a
- currentIndex :: StateVar (Index1 GLint)
- class Index a where
  - index :: a -> IO ()
  - indexv :: Ptr a -> IO ()
- class IndexComponent a
- newtype Index1 a = Index1 a
- data IntegerHandling
  - = ToFloat
  - | ToNormalizedFloat
  - | KeepIntegral
- newtype AttribLocation = AttribLocation GLuint
- currentVertexAttrib :: AttribLocation -> StateVar (Vertex4 GLfloat)
- currentVertexAttribI :: AttribLocation -> StateVar (Vertex4 GLint)
- currentVertexAttribIu :: AttribLocation -> StateVar (Vertex4 GLuint)
- class VertexAttrib a where
  - vertexAttrib :: IntegerHandling -> AttribLocation -> a -> IO ()
  - vertexAttribv :: IntegerHandling -> AttribLocation -> Ptr a -> IO ()
- class (Storable a, Num a) => VertexAttribComponent a where
  - vertexAttrib1 :: AttribLocation -> a -> IO ()
  - vertexAttrib2 :: AttribLocation -> a -> a -> IO ()
  - vertexAttrib3 :: AttribLocation -> a -> a -> a -> IO ()
  - vertexAttrib4 :: AttribLocation -> a -> a -> a -> a -> IO ()
  - vertexAttrib1N :: AttribLocation -> a -> IO ()
  - vertexAttrib2N :: AttribLocation -> a -> a -> IO ()
  - vertexAttrib3N :: AttribLocation -> a -> a -> a -> IO ()
  - vertexAttrib4N :: AttribLocation -> a -> a -> a -> a -> IO ()
  - vertexAttrib1I :: AttribLocation -> a -> IO ()
  - vertexAttrib2I :: AttribLocation -> a -> a -> IO ()
  - vertexAttrib3I :: AttribLocation -> a -> a -> a -> IO ()
  - vertexAttrib4I :: AttribLocation -> a -> a -> a -> a -> IO ()
  - vertexAttrib1v :: AttribLocation -> Ptr a -> IO ()
  - vertexAttrib2v :: AttribLocation -> Ptr a -> IO ()
  - vertexAttrib3v :: AttribLocation -> Ptr a -> IO ()
  - vertexAttrib4v :: AttribLocation -> Ptr a -> IO ()
  - vertexAttrib1Nv :: AttribLocation -> Ptr a -> IO ()
  - vertexAttrib2Nv :: AttribLocation -> Ptr a -> IO ()
  - vertexAttrib3Nv :: AttribLocation -> Ptr a -> IO ()
  - vertexAttrib4Nv :: AttribLocation -> Ptr a -> IO ()
  - vertexAttrib1Iv :: AttribLocation -> Ptr a -> IO ()
  - vertexAttrib2Iv :: AttribLocation -> Ptr a -> IO ()
  - vertexAttrib3Iv :: AttribLocation -> Ptr a -> IO ()
  - vertexAttrib4Iv :: AttribLocation -> Ptr a -> IO ()
- newtype TextureUnit = TextureUnit GLuint
- maxTextureUnit :: GettableStateVar TextureUnit

# Vertex Coordinates

class Vertex a where

Specify the (x, y, z, w) coordinates of a four-dimensional vertex. This must only be done during `renderPrimitive`, otherwise the behaviour is unspecified. The current values of the auxiliary vertex attributes are associated with the vertex.

Note that there is no such thing as a "current vertex" which could be retrieved.

Methods

vertex :: a -> IO ()

vertexv :: Ptr a -> IO ()

Instances

VertexComponent a => Vertex (Vertex4 a) |
VertexComponent a => Vertex (Vertex3 a) |
VertexComponent a => Vertex (Vertex2 a) |

class VertexComponent a

The class of all types which can be used as a vertex coordinate.

Instances

VertexComponent Double |
VertexComponent Float |
VertexComponent Int16 |
VertexComponent Int32 |

newtype Vertex1 a

A vertex with y=0, z=0 and w=1.

Constructors

Vertex1 a |

Instances

Functor Vertex1 |
Typeable1 Vertex1 |
Applicative Vertex1 |
Foldable Vertex1 |
Traversable Vertex1 |
Bounded a => Bounded (Vertex1 a) |
Eq a => Eq (Vertex1 a) |
Ord a => Ord (Vertex1 a) |
Read a => Read (Vertex1 a) |
Show a => Show (Vertex1 a) |
Ix a => Ix (Vertex1 a) |
Typeable a => Typeable (Vertex1 a) |
Storable a => Storable (Vertex1 a) |
VertexAttribComponent a => VertexAttrib (Vertex1 a) |

data Vertex2 a

A vertex with z=0 and w=1.

Constructors

Vertex2 !a !a |

Instances

Functor Vertex2 |
Typeable1 Vertex2 |
Applicative Vertex2 |
Foldable Vertex2 |
Traversable Vertex2 |
TrimmingPoint Vertex2 |
Bounded a => Bounded (Vertex2 a) |
Eq a => Eq (Vertex2 a) |
Ord a => Ord (Vertex2 a) |
Read a => Read (Vertex2 a) |
Show a => Show (Vertex2 a) |
Ix a => Ix (Vertex2 a) |
Typeable a => Typeable (Vertex2 a) |
Storable a => Storable (Vertex2 a) |
VertexAttribComponent a => VertexAttrib (Vertex2 a) |
VertexComponent a => Vertex (Vertex2 a) |
UniformComponent a => Uniform (Vertex2 a) |
WindowPosComponent a => WindowPos (Vertex2 a) |
RasterPosComponent a => RasterPos (Vertex2 a) |

data Vertex3 a

A vertex with w=1.

Constructors

Vertex3 !a !a !a |

Instances

Functor Vertex3 |
Typeable1 Vertex3 |
Applicative Vertex3 |
Foldable Vertex3 |
Traversable Vertex3 |
ControlPoint Vertex3 |
TrimmingPoint Vertex3 |
Bounded a => Bounded (Vertex3 a) |
Eq a => Eq (Vertex3 a) |
Ord a => Ord (Vertex3 a) |
Read a => Read (Vertex3 a) |
Show a => Show (Vertex3 a) |
Ix a => Ix (Vertex3 a) |
Typeable a => Typeable (Vertex3 a) |
Storable a => Storable (Vertex3 a) |
VertexAttribComponent a => VertexAttrib (Vertex3 a) |
VertexComponent a => Vertex (Vertex3 a) |
UniformComponent a => Uniform (Vertex3 a) |
WindowPosComponent a => WindowPos (Vertex3 a) |
RasterPosComponent a => RasterPos (Vertex3 a) |

data Vertex4 a

A fully-fledged four-dimensional vertex.

Constructors

Vertex4 !a !a !a !a |

Instances

Functor Vertex4 |
Typeable1 Vertex4 |
Applicative Vertex4 |
Foldable Vertex4 |
Traversable Vertex4 |
ControlPoint Vertex4 |
Bounded a => Bounded (Vertex4 a) |
Eq a => Eq (Vertex4 a) |
Ord a => Ord (Vertex4 a) |
Read a => Read (Vertex4 a) |
Show a => Show (Vertex4 a) |
Ix a => Ix (Vertex4 a) |
Typeable a => Typeable (Vertex4 a) |
Storable a => Storable (Vertex4 a) |
VertexAttribComponent a => VertexAttrib (Vertex4 a) |
VertexComponent a => Vertex (Vertex4 a) |
UniformComponent a => Uniform (Vertex4 a) |
RasterPosComponent a => RasterPos (Vertex4 a) |

# Auxiliary Vertex Attributes

Apart from its coordinates in four-dimensional space, every vertex has associated auxiliary attributes: Its texture coordinates, a normal, a fog coordinate, and a color plus a secondary color. For every attribute, the OpenGL state contains its current value, which can be changed at any time.

Every attribute has a "natural" format via which it can be manipulated directly as part of the OpenGL state, e.g. the current texture coordinates are internally handled as ``TexCoord4` `GLfloat``. Different formats are converted to this format, e.g. the s, r, and t coordinates of a ``TexCoord3` `GLint`` are converted to floating point values and a q coordinate of 1.0 is implicitly assumed.

Consequently, the vast majority of classes, functions, and data types in this module are for convenience only and offer no additional functionality.

## Texture Coordinates

currentTextureCoords :: StateVar (TexCoord4 GLfloat)

The current texture coordinates (s, t, r, q) for the current texture unit (see `activeTexture`). The initial value is (0,0,0,1) for all texture units.

class TexCoord a where

Change the current texture coordinates of the current or given texture unit.

Methods

texCoord :: a -> IO ()

texCoordv :: Ptr a -> IO ()

multiTexCoord :: TextureUnit -> a -> IO ()

multiTexCoordv :: TextureUnit -> Ptr a -> IO ()

Instances

TexCoordComponent a => TexCoord (TexCoord4 a) |
TexCoordComponent a => TexCoord (TexCoord3 a) |
TexCoordComponent a => TexCoord (TexCoord2 a) |
TexCoordComponent a => TexCoord (TexCoord1 a) |

class TexCoordComponent a

The class of all types which can be used as a texture coordinate.

Instances

TexCoordComponent Double |
TexCoordComponent Float |
TexCoordComponent Int16 |
TexCoordComponent Int32 |

newtype TexCoord1 a

Texture coordinates with t=0, r=0, and q=1.

Constructors

TexCoord1 a |

Instances

Functor TexCoord1 |
Typeable1 TexCoord1 |
Applicative TexCoord1 |
Foldable TexCoord1 |
Traversable TexCoord1 |
ControlPoint TexCoord1 |
Bounded a => Bounded (TexCoord1 a) |
Eq a => Eq (TexCoord1 a) |
Ord a => Ord (TexCoord1 a) |
Read a => Read (TexCoord1 a) |
Show a => Show (TexCoord1 a) |
Ix a => Ix (TexCoord1 a) |
Typeable a => Typeable (TexCoord1 a) |
Storable a => Storable (TexCoord1 a) |
VertexAttribComponent a => VertexAttrib (TexCoord1 a) |
TexCoordComponent a => TexCoord (TexCoord1 a) |
UniformComponent a => Uniform (TexCoord1 a) |

data TexCoord2 a

Texture coordinates with r=0 and q=1.

Constructors

TexCoord2 !a !a |

Instances

Functor TexCoord2 |
Typeable1 TexCoord2 |
Applicative TexCoord2 |
Foldable TexCoord2 |
Traversable TexCoord2 |
ControlPoint TexCoord2 |
Bounded a => Bounded (TexCoord2 a) |
Eq a => Eq (TexCoord2 a) |
Ord a => Ord (TexCoord2 a) |
Read a => Read (TexCoord2 a) |
Show a => Show (TexCoord2 a) |
Ix a => Ix (TexCoord2 a) |
Typeable a => Typeable (TexCoord2 a) |
Storable a => Storable (TexCoord2 a) |
VertexAttribComponent a => VertexAttrib (TexCoord2 a) |
TexCoordComponent a => TexCoord (TexCoord2 a) |
UniformComponent a => Uniform (TexCoord2 a) |

data TexCoord3 a

Texture coordinates with q=1.

Constructors

TexCoord3 !a !a !a |

Instances

Functor TexCoord3 |
Typeable1 TexCoord3 |
Applicative TexCoord3 |
Foldable TexCoord3 |
Traversable TexCoord3 |
ControlPoint TexCoord3 |
Bounded a => Bounded (TexCoord3 a) |
Eq a => Eq (TexCoord3 a) |
Ord a => Ord (TexCoord3 a) |
Read a => Read (TexCoord3 a) |
Show a => Show (TexCoord3 a) |
Ix a => Ix (TexCoord3 a) |
Typeable a => Typeable (TexCoord3 a) |
Storable a => Storable (TexCoord3 a) |
VertexAttribComponent a => VertexAttrib (TexCoord3 a) |
TexCoordComponent a => TexCoord (TexCoord3 a) |
UniformComponent a => Uniform (TexCoord3 a) |

data TexCoord4 a

Fully-fledged four-dimensional texture coordinates.

Constructors

TexCoord4 !a !a !a !a |

Instances

Functor TexCoord4 |
Typeable1 TexCoord4 |
Applicative TexCoord4 |
Foldable TexCoord4 |
Traversable TexCoord4 |
ControlPoint TexCoord4 |
Bounded a => Bounded (TexCoord4 a) |
Eq a => Eq (TexCoord4 a) |
Ord a => Ord (TexCoord4 a) |
Read a => Read (TexCoord4 a) |
Show a => Show (TexCoord4 a) |
Ix a => Ix (TexCoord4 a) |
Typeable a => Typeable (TexCoord4 a) |
Storable a => Storable (TexCoord4 a) |
VertexAttribComponent a => VertexAttrib (TexCoord4 a) |
TexCoordComponent a => TexCoord (TexCoord4 a) |
UniformComponent a => Uniform (TexCoord4 a) |

## Normal

currentNormal :: StateVar (Normal3 GLfloat)

The current normal (x, y, z). The initial value is the unit vector (0, 0, 1).

class Normal a where

Change the current normal. Integral arguments are converted to floating-point with a linear mapping that maps the most positive representable integer value to 1.0, and the most negative representable integer value to -1.0.

Normals specified with `normal` or `normalv` need not have unit length. If `normalize` is enabled, then normals of any length specified with `normal` or `normalv` are normalized after transformation. If `rescaleNormal` is enabled, normals are scaled by a scaling factor derived from the modelview matrix. `rescaleNormal` requires that the originally specified normals were of unit length, and that the modelview matrix contains only uniform scales for proper results. Normalization is initially disabled.

Methods

normal :: a -> IO ()

normalv :: Ptr a -> IO ()

Instances

NormalComponent a => Normal (Normal3 a) |

class NormalComponent a

The class of all types which can be used as a component of a normal.

Instances

NormalComponent Double |
NormalComponent Float |
NormalComponent Int8 |
NormalComponent Int16 |
NormalComponent Int32 |

data Normal3 a

Constructors

Normal3 !a !a !a |

Instances

Functor Normal3 |
Typeable1 Normal3 |
Applicative Normal3 |
Foldable Normal3 |
Traversable Normal3 |
ControlPoint Normal3 |
Bounded a => Bounded (Normal3 a) |
Eq a => Eq (Normal3 a) |
Ord a => Ord (Normal3 a) |
Read a => Read (Normal3 a) |
Show a => Show (Normal3 a) |
Ix a => Ix (Normal3 a) |
Typeable a => Typeable (Normal3 a) |
Storable a => Storable (Normal3 a) |
VertexAttribComponent a => VertexAttrib (Normal3 a) |
NormalComponent a => Normal (Normal3 a) |
UniformComponent a => Uniform (Normal3 a) |

## Fog Coordinate

currentFogCoord :: StateVar (FogCoord1 GLfloat)

The current fog coordinate. The initial value is 0.

class FogCoord a where

Change the current fog coordinate.

Methods

fogCoord :: a -> IO ()

fogCoordv :: Ptr a -> IO ()

Instances

FogCoordComponent a => FogCoord (FogCoord1 a) |

class FogCoordComponent a

The class of all types which can be used as the fog coordinate.

Instances

FogCoordComponent Double |
FogCoordComponent Float |

newtype FogCoord1 a

A fog coordinate.

Constructors

FogCoord1 a |

Instances

Functor FogCoord1 |
Typeable1 FogCoord1 |
Applicative FogCoord1 |
Foldable FogCoord1 |
Traversable FogCoord1 |
Bounded a => Bounded (FogCoord1 a) |
Eq a => Eq (FogCoord1 a) |
Ord a => Ord (FogCoord1 a) |
Read a => Read (FogCoord1 a) |
Show a => Show (FogCoord1 a) |
Ix a => Ix (FogCoord1 a) |
Typeable a => Typeable (FogCoord1 a) |
Storable a => Storable (FogCoord1 a) |
VertexAttribComponent a => VertexAttrib (FogCoord1 a) |
FogCoordComponent a => FogCoord (FogCoord1 a) |
UniformComponent a => Uniform (FogCoord1 a) |

## Color and Secondary Color

rgbaMode :: GettableStateVar Bool

If `rgbaMode` contains `True`, the color buffers store RGBA value. If color indexes are stored, it contains `False`.

currentColor :: StateVar (Color4 GLfloat)

class Color a where

Change the current color.

Methods

color :: a -> IO ()

colorv :: Ptr a -> IO ()

Instances

ColorComponent a => Color (Color4 a) |
ColorComponent a => Color (Color3 a) |

currentSecondaryColor :: StateVar (Color3 GLfloat)

class SecondaryColor a where

Change the current secondary color.

Methods

secondaryColor :: a -> IO ()

secondaryColorv :: Ptr a -> IO ()

Instances

ColorComponent a => SecondaryColor (Color3 a) |

class ColorComponent a

The class of all types which can be used as a color component.

Instances

ColorComponent Double |
ColorComponent Float |
ColorComponent Int8 |
ColorComponent Int16 |
ColorComponent Int32 |
ColorComponent Word8 |
ColorComponent Word16 |
ColorComponent Word32 |

data Color3 a

Constructors

Color3 !a !a !a |

Instances

Functor Color3 |
Typeable1 Color3 |
Applicative Color3 |
Foldable Color3 |
Traversable Color3 |
Bounded a => Bounded (Color3 a) |
Eq a => Eq (Color3 a) |
Ord a => Ord (Color3 a) |
Read a => Read (Color3 a) |
Show a => Show (Color3 a) |
Ix a => Ix (Color3 a) |
Typeable a => Typeable (Color3 a) |
Storable a => Storable (Color3 a) |
VertexAttribComponent a => VertexAttrib (Color3 a) |
ColorComponent a => SecondaryColor (Color3 a) |
ColorComponent a => Color (Color3 a) |
UniformComponent a => Uniform (Color3 a) |

data Color4 a

A fully-fledged RGBA color.

Constructors

Color4 !a !a !a !a |

Instances

Functor Color4 |
Typeable1 Color4 |
Applicative Color4 |
Foldable Color4 |
Traversable Color4 |
ControlPoint Color4 |
Bounded a => Bounded (Color4 a) |
Eq a => Eq (Color4 a) |
Ord a => Ord (Color4 a) |
Read a => Read (Color4 a) |
Show a => Show (Color4 a) |
Ix a => Ix (Color4 a) |
Typeable a => Typeable (Color4 a) |
Storable a => Storable (Color4 a) |
VertexAttribComponent a => VertexAttrib (Color4 a) |
ColorComponent a => Color (Color4 a) |
UniformComponent a => Uniform (Color4 a) |

currentIndex :: StateVar (Index1 GLint)

class Index a where

Change the current color index.

Methods

index :: a -> IO ()

indexv :: Ptr a -> IO ()

Instances

IndexComponent a => Index (Index1 a) |

class IndexComponent a

The class of all types which can be used as a color index.

Instances

IndexComponent Double |
IndexComponent Float |
IndexComponent Int16 |
IndexComponent Int32 |
IndexComponent Word8 |

newtype Index1 a

A color index.

Constructors

Index1 a |

Instances

Functor Index1 |
Typeable1 Index1 |
Applicative Index1 |
Foldable Index1 |
Traversable Index1 |
ControlPoint Index1 |
Bounded a => Bounded (Index1 a) |
Eq a => Eq (Index1 a) |
Ord a => Ord (Index1 a) |
Read a => Read (Index1 a) |
Show a => Show (Index1 a) |
Ix a => Ix (Index1 a) |
Typeable a => Typeable (Index1 a) |
Storable a => Storable (Index1 a) |
VertexAttribComponent a => VertexAttrib (Index1 a) |
IndexComponent a => Index (Index1 a) |
UniformComponent a => Uniform (Index1 a) |

# Generic Vertex Attributes

data IntegerHandling

Constructors

ToFloat |
ToNormalizedFloat |
KeepIntegral |

Instances

Eq IntegerHandling |
Ord IntegerHandling |
Show IntegerHandling |

newtype AttribLocation

Constructors

AttribLocation GLuint |

Instances

Eq AttribLocation |
Ord AttribLocation |
Show AttribLocation |

currentVertexAttrib :: AttribLocation -> StateVar (Vertex4 GLfloat)

currentVertexAttribI :: AttribLocation -> StateVar (Vertex4 GLint)

currentVertexAttribIu :: AttribLocation -> StateVar (Vertex4 GLuint)

class VertexAttrib a where

Methods

vertexAttrib :: IntegerHandling -> AttribLocation -> a -> IO ()

vertexAttribv :: IntegerHandling -> AttribLocation -> Ptr a -> IO ()

Instances

VertexAttribComponent a => VertexAttrib (Vector4 a) |
VertexAttribComponent a => VertexAttrib (Vector3 a) |
VertexAttribComponent a => VertexAttrib (Vector2 a) |
VertexAttribComponent a => VertexAttrib (Vector1 a) |
VertexAttribComponent a => VertexAttrib (Vertex4 a) |
VertexAttribComponent a => VertexAttrib (Vertex3 a) |
VertexAttribComponent a => VertexAttrib (Vertex2 a) |
VertexAttribComponent a => VertexAttrib (Vertex1 a) |
VertexAttribComponent a => VertexAttrib (Index1 a) |
VertexAttribComponent a => VertexAttrib (Color4 a) |
VertexAttribComponent a => VertexAttrib (Color3 a) |
VertexAttribComponent a => VertexAttrib (FogCoord1 a) |
VertexAttribComponent a => VertexAttrib (Normal3 a) |
VertexAttribComponent a => VertexAttrib (TexCoord4 a) |
VertexAttribComponent a => VertexAttrib (TexCoord3 a) |
VertexAttribComponent a => VertexAttrib (TexCoord2 a) |
VertexAttribComponent a => VertexAttrib (TexCoord1 a) |

class (Storable a, Num a) => VertexAttribComponent a where

The class of all types which can be used as a generic vertex attribute. NOTE: Do not use the methods of this class directly, they were only exported by accident and will be hidden in future versions of this package.

Methods

vertexAttrib1 :: AttribLocation -> a -> IO ()

vertexAttrib2 :: AttribLocation -> a -> a -> IO ()

vertexAttrib3 :: AttribLocation -> a -> a -> a -> IO ()

vertexAttrib4 :: AttribLocation -> a -> a -> a -> a -> IO ()

vertexAttrib1N :: AttribLocation -> a -> IO ()

vertexAttrib2N :: AttribLocation -> a -> a -> IO ()

vertexAttrib3N :: AttribLocation -> a -> a -> a -> IO ()

vertexAttrib4N :: AttribLocation -> a -> a -> a -> a -> IO ()

vertexAttrib1I :: AttribLocation -> a -> IO ()

vertexAttrib2I :: AttribLocation -> a -> a -> IO ()

vertexAttrib3I :: AttribLocation -> a -> a -> a -> IO ()

vertexAttrib4I :: AttribLocation -> a -> a -> a -> a -> IO ()

vertexAttrib1v :: AttribLocation -> Ptr a -> IO ()

vertexAttrib2v :: AttribLocation -> Ptr a -> IO ()

vertexAttrib3v :: AttribLocation -> Ptr a -> IO ()

vertexAttrib4v :: AttribLocation -> Ptr a -> IO ()

vertexAttrib1Nv :: AttribLocation -> Ptr a -> IO ()

vertexAttrib2Nv :: AttribLocation -> Ptr a -> IO ()

vertexAttrib3Nv :: AttribLocation -> Ptr a -> IO ()

vertexAttrib4Nv :: AttribLocation -> Ptr a -> IO ()

vertexAttrib1Iv :: AttribLocation -> Ptr a -> IO ()

vertexAttrib2Iv :: AttribLocation -> Ptr a -> IO ()

vertexAttrib3Iv :: AttribLocation -> Ptr a -> IO ()

vertexAttrib4Iv :: AttribLocation -> Ptr a -> IO ()

Instances

VertexAttribComponent Double |
VertexAttribComponent Float |
VertexAttribComponent Int8 |
VertexAttribComponent Int16 |
VertexAttribComponent Int32 |
VertexAttribComponent Word8 |
VertexAttribComponent Word16 |
VertexAttribComponent Word32 |

# Texture Units

newtype TextureUnit

Identifies a texture unit via its number, which must be in the range of (0 .. `maxTextureUnit`).

Constructors

TextureUnit GLuint |

Instances

Eq TextureUnit |
Ord TextureUnit |
Show TextureUnit |

maxTextureUnit :: GettableStateVar TextureUnit

An implementation must support at least 2 texture units, but it may support up to 32 ones. This state variable can be used to query the actual implementation limit.