Safe Haskell | None |
---|
- type GLflt = GLfloat
- glflt :: Float -> GLflt
- unflt :: GLflt -> Float
- class ToOpenGLMatrix m where
- makeGLMatrix :: m -> IO (GLmatrix GLflt)
- class FromOpenGLMatrix m where
- peekGLMatrix :: GLmatrix GLflt -> IO m
- setMatrix :: ToOpenGLMatrix m => Maybe MatrixMode -> m -> IO ()
- getMatrix :: FromOpenGLMatrix m => Maybe MatrixMode -> IO m
- matrix :: (ToOpenGLMatrix m, FromOpenGLMatrix m) => Maybe MatrixMode -> StateVar m
- currentMatrix :: (ToOpenGLMatrix m, FromOpenGLMatrix m) => StateVar m
- multMatrix :: ToOpenGLMatrix m => m -> IO ()
- radianToDegrees :: RealFrac a => a -> a
- degreesToRadian :: Floating a => a -> a
- glRotate :: Float -> Vec3 -> IO ()
- glTranslate :: Vec3 -> IO ()
- glScale3 :: Vec3 -> IO ()
- glScale :: Float -> IO ()
- orthoMatrix :: (Float, Float) -> (Float, Float) -> (Float, Float) -> Mat4
- orthoMatrix2 :: Vec3 -> Vec3 -> Mat4
- frustumMatrix :: (Float, Float) -> (Float, Float) -> (Float, Float) -> Mat4
- frustumMatrix2 :: Vec3 -> Vec3 -> Mat4
- inverseFrustumMatrix :: (Float, Float) -> (Float, Float) -> (Float, Float) -> Mat4
- class VertexAttrib' a where
- vertexAttrib :: AttribLocation -> a -> IO ()
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).
makeGLMatrix :: m -> IO (GLmatrix GLflt)Source
class FromOpenGLMatrix m whereSource
peekGLMatrix :: GLmatrix GLflt -> IO mSource
setMatrix :: ToOpenGLMatrix m => Maybe MatrixMode -> m -> IO ()Source
getMatrix :: FromOpenGLMatrix m => Maybe MatrixMode -> IO mSource
matrix :: (ToOpenGLMatrix m, FromOpenGLMatrix m) => Maybe MatrixMode -> StateVar mSource
currentMatrix :: (ToOpenGLMatrix m, FromOpenGLMatrix m) => StateVar mSource
multMatrix :: ToOpenGLMatrix m => m -> IO ()Source
radianToDegrees :: RealFrac a => a -> aSource
degreesToRadian :: Floating a => a -> aSource
glTranslate :: Vec3 -> IO ()Source
"Orthogonal projecton" matrix, a la OpenGL (the corresponding functionality is removed in OpenGL 3.1)
The same as orthoMatrix, but with a different parametrization.
"Perspective projecton" matrix, a la OpenGL (the corresponding functionality is removed in OpenGL 3.1).
The same as frustumMatrix, but with a different parametrization.
Inverse of frustumMatrix.