vect-opengl-0.4.6: OpenGL support for the `vect' low-dimensional linear algebra library.

Data.Vect.Float.OpenGL

Description

OpenGL support, including Vertex, TexCoord, etc instances for Vec2, Vec3 and Vec4.

Synopsis

Documentation

class ToOpenGLMatrix m whereSource

There should be a big warning here about the different conventions, hidden transpositions, and all the confusion this will inevitably cause...

As it stands,

 glRotate t1 axis1 >> glRotate t2 axis2 >> glRotate t3 axis3

has the same result as

 multMatrix (rotMatrixProj4 t3 axis3 .*. rotMatrixProj4 t2 axis2 .*. rotMatrixProj4 t1 axis1)

because at the interface of OpenGL and this library there is a transposition to compensate for the different conventions. (This transposition is implicit in the code, because the way the matrices are stored in the memory is also different: OpenGL stores them column-major, and we store them row-major).

glRotate :: Float -> Vec3 -> IO ()Source

The angle is in radians. (WARNING: OpenGL uses degrees!)

orthoMatrixSource

Arguments

:: (Float, Float)

(left,right)

-> (Float, Float)

(bottom,top)

-> (Float, Float)

(near,far)

-> Mat4 

"Orthogonal projecton" matrix, a la OpenGL (the corresponding functionality is removed in OpenGL 3.1)

orthoMatrix2Source

Arguments

:: Vec3

(left,top,near)

-> Vec3

(right,bottom,far)

-> Mat4 

The same as orthoMatrix, but with a different parametrization.

frustumMatrixSource

Arguments

:: (Float, Float)

(left,right)

-> (Float, Float)

(bottom,top)

-> (Float, Float)

(near,far)

-> Mat4 

"Perspective projecton" matrix, a la OpenGL (the corresponding functionality is removed in OpenGL 3.1).

frustumMatrix2Source

Arguments

:: Vec3

(left,top,near)

-> Vec3

(right,bottom,far)

-> Mat4 

The same as frustumMatrix, but with a different parametrization.

inverseFrustumMatrixSource

Arguments

:: (Float, Float)

(left,right)

-> (Float, Float)

(bottom,top)

-> (Float, Float)

(near,far)

-> Mat4 

Inverse of frustumMatrix.