Re: Example Program and Compiliation?

Sven Panne <[email protected]>
Newsgroups gmane.comp.lang.haskell.hopengl
Message-ID <[email protected]>
Shae Matijs Erisson wrote:
> I'm still not sure whether OpenGL or HOpenGL is the canonically correct version

Long story made short: The HOpenGL tar files on http://haskell.org/HOpenGL are
the predecessors to the "OpenGL" and "GLUT" packages in the GHC CVS repository
at http://cvs.haskell.org/cgi-bin/cvsweb.cgi/fptools/libraries/. The tar files
are essentially unsupported now and the API has changed a bit since then. The
version in the repository is actively maintained, and GHC and Hugs (probably NHC98,
too) can easily be built with OpenGL/GLUT support via a single "--enable-hopengl"
configure option. It is up to the maintainers of the binary distributions if
there is OpenGL/GLUT support or not. If you are using Windoze, the recent Hugs
installer would be a good choice, it includes both packages.

I know that the current situation (one old, but separate version and a new version
which is a bit tied to the Haskell system in question) is far from satisfactory,
but we are working on this. :-)

Just another Windoze note: If you are using the GLUT toolkit, the platform doesn't
matter, the Haskell code of your OpenGL application is always the same.

> but the ghc6-hopengl debian package maintainer (Ian Lynagh) wrote this
> cute demo script that works with the HOpenGL debs he created:

Two notes on the demo:

    * Importing Graphics.UI.GLUT is enough, this module re-exports all of
      Graphics.Rendering.OpenGL.

    * Instead of

         makeCapability CapDepthTest $= Enabled

      simply use

         depthFunc $= Just Less

      The former uses internal functions of the OpenGL package, which may
      change without further notice. Furthermore, the "official" way is a bit
      nicer and shows one of the design principles of the new API: Instead of
      separately setting a "cheap" aspect of the OpenGL state (here: the depth
      comparison function) and enabling/disabling the associated functionality
      (here: the depth test), a single state variable (here: depthFunc) of a
      Maybe type is used. So e.g. disabling the depth test is simply done by

         depthFunc $= Nothing

      or querying its state by

         df <- get depthFunc
         case df of
            Nothing -> ...    -- the depth test is disabled
            Just func -> ...  -- the depth test is enabled and func is used as the
                              -- comparison function

I've uploaded the Haddock documentation for the hierarchical libraries including
the OpenGL/GLUT packages on http://haskell.org/HOpenGL/newAPI/. Apart from that,
Sven Eric Panitz has written a nice tutorial using the new API, see
http://www.tfh-berlin.de/~panitz/hopengl/.

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.