
On 1/5/07, Sebastian Sylvan
On 1/5/07, jamin1001
wrote: Right, I buy that. But I don't see how the C line
glGetFloatv (GL_MODELVIEW_MATRIX, your_matrix_result) ;
can be done, since it writes a result into your_matrix_result, so I would need something like:
preservingMatrix $ do loadIdentity -- do whatever you want with your your matrix rs <- get ((matrix $ Just $ Modelview 0)::StateVar(GLmatrix GLdouble))
This does indeed compile for me. GHC 6.6.
Though I would've probably avoidd all those ugly type signatures and either put one on the action which does this, or (probably) just not specify the type at all since whatever you do with rs will likely narrow the type down to GLmatrix GLdouble anyway. Or if it still doesn't work you could write: s <- get $ matrix $ Just $ Modelview 0 :: IO (GLmatrix GLdouble) And get rid of some of the clutter. The reason you need a type is due to the monomorphism restriction, which you can get rid of using -fno-monomorphis-restriction. Also you don't need to use "matrix", you can use "currentMatrix" (analogous to your C code), which will retrieve whatever matrix is set using the matrixMode state variable. -- Sebastian Sylvan +46(0)736-818655 UIN: 44640862