|
Graphics.Rendering.OpenGL.GL.VertexSpec | Portability | portable | Stability | stable | Maintainer | sven.panne@aedion.de |
|
|
|
|
|
Description |
This module corresponds to section 2.7 (Vertex Specification) of the
OpenGL 2.1 specs.
|
|
Synopsis |
|
|
|
|
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 | |
|
|
class VertexComponent a |
The class of all types which can be used as a vertex coordinate.
| | Instances | |
|
|
data Vertex2 a |
A vertex with z=0 and w=1.
| Constructors | | Instances | |
|
|
data Vertex3 a |
A vertex with w=1.
| Constructors | | Instances | |
|
|
data Vertex4 a |
A fully-fledged four-dimensional vertex.
| Constructors | | Instances | |
|
|
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 | | | Instances | |
|
|
class TexCoordComponent a |
The class of all types which can be used as a texture coordinate.
| | Instances | |
|
|
newtype TexCoord1 a |
Texture coordinates with t=0, r=0, and q=1.
| Constructors | | Instances | |
|
|
data TexCoord2 a |
Texture coordinates with r=0 and q=1.
| Constructors | | Instances | |
|
|
data TexCoord3 a |
Texture coordinates with q=1.
| Constructors | | Instances | |
|
|
data TexCoord4 a |
Fully-fledged four-dimensional texture coordinates.
| Constructors | | Instances | |
|
|
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 | |
|
|
class NormalComponent a |
The class of all types which can be used as a component of a normal.
| | Instances | |
|
|
data Normal3 a |
Constructors | | Instances | |
|
|
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 | |
|
|
class FogCoordComponent a |
The class of all types which can be used as the fog coordinate.
| | Instances | |
|
|
newtype FogCoord1 a |
A fog coordinate.
| Constructors | | Instances | |
|
|
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 | |
|
|
currentSecondaryColor :: StateVar (Color3 GLfloat) |
|
class SecondaryColor a where |
Change the current secondary color.
| | Methods | secondaryColor :: a -> IO () | | secondaryColorv :: Ptr a -> IO () |
| | Instances | |
|
|
class ColorComponent a |
The class of all types which can be used as a color component.
| | Instances | |
|
|
data Color3 a |
Constructors | | Instances | |
|
|
data Color4 a |
A fully-fledged RGBA color.
| Constructors | | Instances | |
|
|
currentIndex :: StateVar (Index1 GLint) |
|
class Index a where |
Change the current color index.
| | Methods | index :: a -> IO () | | indexv :: Ptr a -> IO () |
| | Instances | |
|
|
class IndexComponent a |
The class of all types which can be used as a color index.
| | Instances | |
|
|
newtype Index1 a |
A color index.
| Constructors | | Instances | |
|
|
Generic Vertex Attributes
|
|
newtype AttribLocation |
Constructors | | Instances | |
|
|
class VertexAttrib a |
| Instances | |
|
|
class VertexAttribComponent a where |
The class of all types which can be used as a generic vertex attribute.
| | Methods | | | Instances | |
|
|
Texture Units
|
|
newtype TextureUnit |
Identifies a texture unit via its number, which must be in the range of
(0 .. maxTextureUnit).
| Constructors | | Instances | |
|
|
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.
|
|
Produced by Haddock version 0.8 |