Re: (not?) using preservingMatrix

Sven Panne <[email protected]>
Newsgroups gmane.comp.lang.haskell.hopengl
Message-ID <[email protected]>
Am Freitag, 5. Januar 2007 22:19 schrieb jamin1001:
> Thank you very much.  I appreciate the detailed response and extra tips!

Thanks to Sebastian, too. Just a few remarks from my side:

   * preservingMatrix actually does a little bit more: It uses the current 
matrix mode in effect at the time it was called when popping the matrix, and 
does this in an exception-safe way. There is a variant for performance freaks 
and/or people who can guarantee that an exception will never be thrown by the 
action passed (unsafePreservingMatrix). In the same spirit, there is an 
unsafe variant of renderPrimitive, too.

   * "currentMatrix" is equivalent to "matrix Nothing", using whichever matrix 
mode is currently set. The example given states an explicit matrix to be 
accessed.

   * Sometimes explicit type signatures are needed when the OpenGL package is 
used, although this rarely happens for non-toy programs. This is a 
consequence of a design decision to be quite flexible regarding the 
represenation of some data structures (matrices, in our example). Although 
there is already a ready-to-use GLmatrix type, one could use custom data 
structures for matrices, as long as they are an instance of the class Matrix 
(define withNewMatrix or newMatrix, plus withMatrix or getMatrixComponents). 
Similar examples are the Map1/Map2/PolygonStipple classes.

   * A hopefully good source of examples is the "examples" subdirectory of the 
GLUT package (http://darcs.haskell.org/packages/GLUT/examples/), which I 
intend to extend constantly. The style follows the books in question very 
closely, so it should be easy to see how the OpenGL package can be used. An 
example which retrieves a calculated matrix is in

   http://darcs.haskell.org/packages/GLUT/examples/RedBook/ShadowMap.hs

(see generateTextureMatrix).

Cheers,
   S.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.