[Haskell] GLUT gears speed

Sven Panne Sven.Panne at aedion.de
Sat Feb 18 14:16:16 EST 2006


Am Montag, 16. Januar 2006 21:52 schrieb Wolfgang Jeltsch:
> Am Montag, 16. Januar 2006 15:16 schrieb Sebastian Sylvan:
> > or (better) vertex buffer objects.
>
> What's this?

The basic idea behind buffer objects is a general mechanism which allows the 
driver to keep huge amounts of data on the extremely fast on-board memory of 
graphics cards, potentially in an already preprocessed form. Currently two 
kinds of data are standardised: Vertex arrays and indices into those arrays. 
This is a rather cool mechanism, making some more specialised extensions like 
compiled vertex arrays (=> Quake :-) superfluous.

> > Furthermore you should do some hierarchical culling on the terrain
> > (using, e.g. a quad-tree) to avoid drawing things which are not visible.
>
> Too complicated for the practical course.  Doesn't OpenGL already do
> something like this?

OpenGL is intentionally designed as a *rendering* library, onto which 
higher-level libraries (e.g. Inventor) can be layered. Of course OpenGL 
throws away invisible primitives as fast as possible, but even this takes 
some time, so higher-level libraries can make OpenGL's life much easier.

> [...]
> > To summarize: Drawing vast terrains quickly has much more to do with
> > algorithmic cleverness rather than miniscule overheads from library
> > bindings.
>
> I did not refer to the overheads of the binding but to "the slowness of
> Haskell" (compared to C, of course ;-) ). [...]

I think this is one of the strengths of a Haskell binding for OpenGL: You can 
concentrate on the fun part (i.e. clever rendering algorithms etc.) much more 
easily than in C. Given the same amount of time, I imagine that one can 
implement much more elaborate stuff than in C, so you can actually get better 
performance.

Cheers,
   S.


More information about the Haskell mailing list