Copyright | (c) Sven Panne 2002-2013 |
---|---|
License | BSD3 |
Maintainer | Sven Panne <[email protected]> |
Stability | stable |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
Graphics.Rendering.OpenGL.GL.VertexSpec
Contents
Description
This module corresponds to section 2.7 (Vertex Specification) of the OpenGL 2.1 specs.
- class Vertex a where
- class VertexComponent 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
- class NormalComponent a
- data Normal3 a = Normal3 !a !a !a
- currentFogCoord :: StateVar (FogCoord1 GLfloat)
- class FogCoord a where
- class FogCoordComponent a
- newtype FogCoord1 a = FogCoord1 a
- rgbaMode :: GettableStateVar Bool
- currentColor :: StateVar (Color4 GLfloat)
- class Color a where
- 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
- class IndexComponent a
- newtype Index1 a = Index1 a
- data IntegerHandling
- 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
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.
Instances
VertexComponent a => Vertex (Vertex4 a) | |
VertexComponent a => Vertex (Vertex3 a) | |
VertexComponent a => Vertex (Vertex2 a) |
class VertexComponent a Source
The class of all types which can be used as a vertex coordinate.
Minimal complete definition
vertex2, vertex3, vertex4, vertex2v, vertex3v, vertex4v
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
. Different formats are
converted to this format, e.g. the s, r, and t coordinates of a
TexCoord4
GLfloat
are converted to floating point values and a q
coordinate of 1.0 is implicitly assumed.TexCoord3
GLint
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) Source
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.
Change the current texture coordinates of the current or given texture unit.
Methods
texCoordv :: Ptr a -> IO () Source
multiTexCoord :: TextureUnit -> a -> IO () Source
multiTexCoordv :: TextureUnit -> Ptr a -> IO () Source
Instances
TexCoordComponent a => TexCoord (TexCoord4 a) | |
TexCoordComponent a => TexCoord (TexCoord3 a) | |
TexCoordComponent a => TexCoord (TexCoord2 a) | |
TexCoordComponent a => TexCoord (TexCoord1 a) |
class TexCoordComponent a Source
The class of all types which can be used as a texture coordinate.
Minimal complete definition
texCoord1, texCoord2, texCoord3, texCoord4, texCoord1v, texCoord2v, texCoord3v, texCoord4v, multiTexCoord1, multiTexCoord2, multiTexCoord3, multiTexCoord4, multiTexCoord1v, multiTexCoord2v, multiTexCoord3v, multiTexCoord4v
Texture coordinates with t=0, r=0, and q=1.
Constructors
TexCoord1 a |
Instances
Functor 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) | |
Storable a => Storable (TexCoord1 a) | |
VertexAttribComponent a => VertexAttrib (TexCoord1 a) | |
TexCoordComponent a => TexCoord (TexCoord1 a) | |
UniformComponent a => Uniform (TexCoord1 a) | |
Typeable (* -> *) TexCoord1 |
Texture coordinates with r=0 and q=1.
Constructors
TexCoord2 !a !a |
Instances
Functor 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) | |
Storable a => Storable (TexCoord2 a) | |
VertexAttribComponent a => VertexAttrib (TexCoord2 a) | |
TexCoordComponent a => TexCoord (TexCoord2 a) | |
UniformComponent a => Uniform (TexCoord2 a) | |
Typeable (* -> *) TexCoord2 |
Texture coordinates with q=1.
Constructors
TexCoord3 !a !a !a |
Instances
Functor 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) | |
Storable a => Storable (TexCoord3 a) | |
VertexAttribComponent a => VertexAttrib (TexCoord3 a) | |
TexCoordComponent a => TexCoord (TexCoord3 a) | |
UniformComponent a => Uniform (TexCoord3 a) | |
Typeable (* -> *) TexCoord3 |
Fully-fledged four-dimensional texture coordinates.
Constructors
TexCoord4 !a !a !a !a |
Instances
Functor 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) | |
Storable a => Storable (TexCoord4 a) | |
VertexAttribComponent a => VertexAttrib (TexCoord4 a) | |
TexCoordComponent a => TexCoord (TexCoord4 a) | |
UniformComponent a => Uniform (TexCoord4 a) | |
Typeable (* -> *) TexCoord4 |
Normal
currentNormal :: StateVar (Normal3 GLfloat) Source
The current normal (x, y, z). The initial value is the unit vector (0, 0, 1).
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.
Instances
NormalComponent a => Normal (Normal3 a) |
class NormalComponent a Source
The class of all types which can be used as a component of a normal.
Minimal complete definition
normal3, normal3v
Constructors
Normal3 !a !a !a |
Instances
Functor 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) | |
Storable a => Storable (Normal3 a) | |
VertexAttribComponent a => VertexAttrib (Normal3 a) | |
NormalComponent a => Normal (Normal3 a) | |
UniformComponent a => Uniform (Normal3 a) | |
Typeable (* -> *) Normal3 |
Fog Coordinate
currentFogCoord :: StateVar (FogCoord1 GLfloat) Source
The current fog coordinate. The initial value is 0.
Change the current fog coordinate.
Instances
FogCoordComponent a => FogCoord (FogCoord1 a) |
class FogCoordComponent a Source
The class of all types which can be used as the fog coordinate.
Minimal complete definition
fogCoord1, fogCoord1v
A fog coordinate.
Constructors
FogCoord1 a |
Instances
Functor 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) | |
Storable a => Storable (FogCoord1 a) | |
VertexAttribComponent a => VertexAttrib (FogCoord1 a) | |
FogCoordComponent a => FogCoord (FogCoord1 a) | |
UniformComponent a => Uniform (FogCoord1 a) | |
Typeable (* -> *) FogCoord1 |
Color and Secondary Color
Change the current color.
Instances
ColorComponent a => Color (Color4 a) | |
ColorComponent a => Color (Color3 a) |
class SecondaryColor a where Source
Change the current secondary color.
Instances
ColorComponent a => SecondaryColor (Color3 a) |
class ColorComponent a Source
The class of all types which can be used as a color component.
Minimal complete definition
color3, color4, color3v, color4v, secondaryColor3, secondaryColor3v
Constructors
Color3 !a !a !a |
Instances
Functor 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) | |
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) | |
Typeable (* -> *) Color3 |
A fully-fledged RGBA color.
Constructors
Color4 !a !a !a !a |
Instances
Functor 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) | |
Storable a => Storable (Color4 a) | |
VertexAttribComponent a => VertexAttrib (Color4 a) | |
ColorComponent a => Color (Color4 a) | |
UniformComponent a => Uniform (Color4 a) | |
Typeable (* -> *) Color4 |
Change the current color index.
Instances
IndexComponent a => Index (Index1 a) |
class IndexComponent a Source
The class of all types which can be used as a color index.
Minimal complete definition
index1, index1v
A color index.
Constructors
Index1 a |
Instances
Functor 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) | |
Storable a => Storable (Index1 a) | |
VertexAttribComponent a => VertexAttrib (Index1 a) | |
IndexComponent a => Index (Index1 a) | |
UniformComponent a => Uniform (Index1 a) | |
Typeable (* -> *) Index1 |
Generic Vertex Attributes
class VertexAttrib a where Source
Methods
vertexAttrib :: IntegerHandling -> AttribLocation -> a -> IO () Source
vertexAttribv :: IntegerHandling -> AttribLocation -> Ptr a -> IO () Source
Instances
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) | |
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) |
class (Storable a, Num a) => VertexAttribComponent a where Source
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.
Minimal complete definition
Methods
vertexAttrib1 :: AttribLocation -> a -> IO () Source
vertexAttrib2 :: AttribLocation -> a -> a -> IO () Source
vertexAttrib3 :: AttribLocation -> a -> a -> a -> IO () Source
vertexAttrib4 :: AttribLocation -> a -> a -> a -> a -> IO () Source
vertexAttrib1N :: AttribLocation -> a -> IO () Source
vertexAttrib2N :: AttribLocation -> a -> a -> IO () Source
vertexAttrib3N :: AttribLocation -> a -> a -> a -> IO () Source
vertexAttrib4N :: AttribLocation -> a -> a -> a -> a -> IO () Source
vertexAttrib1I :: AttribLocation -> a -> IO () Source
vertexAttrib2I :: AttribLocation -> a -> a -> IO () Source
vertexAttrib3I :: AttribLocation -> a -> a -> a -> IO () Source
vertexAttrib4I :: AttribLocation -> a -> a -> a -> a -> IO () Source
vertexAttrib1v :: AttribLocation -> Ptr a -> IO () Source
vertexAttrib2v :: AttribLocation -> Ptr a -> IO () Source
vertexAttrib3v :: AttribLocation -> Ptr a -> IO () Source
vertexAttrib4v :: AttribLocation -> Ptr a -> IO () Source
vertexAttrib1Nv :: AttribLocation -> Ptr a -> IO () Source
vertexAttrib2Nv :: AttribLocation -> Ptr a -> IO () Source
vertexAttrib3Nv :: AttribLocation -> Ptr a -> IO () Source
vertexAttrib4Nv :: AttribLocation -> Ptr a -> IO () Source
vertexAttrib1Iv :: AttribLocation -> Ptr a -> IO () Source
vertexAttrib2Iv :: AttribLocation -> Ptr a -> IO () Source
vertexAttrib3Iv :: AttribLocation -> Ptr a -> IO () Source
vertexAttrib4Iv :: AttribLocation -> Ptr a -> IO () Source
Texture Units
newtype TextureUnit Source
Identifies a texture unit via its number, which must be in the range of
(0 .. maxTextureUnit
).
Constructors
TextureUnit GLuint |
maxTextureUnit :: GettableStateVar TextureUnit Source
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.