2010/7/29 Eitan Goldshtrom <[email protected]>: > I'm having an unusual problem with OpenGL. To be honest I probably shouldn't > be using OpenGL for this, as I'm just doing 2D and only drawing Points, but > I don't know about any other display packages, so I'm making due. If this is > a problem because of OpenGL however, then I'll have to learn another > package. The problem is speed. I have a list of points representing the > color of 800x600 pixels. All I'm trying to do is display the pixels on the > screen. I use the following: > > renderPrimitive Points $ mapM_ display list > flush > where > display [] = return () > display ((x,y,i):n) = do > color $ Color3 i i i > vertex $ Vertex2 x y > display n > > But, for some reason this takes FOREVER. I don't know how to use debugging > hooks yet without an IDE -- and I don't use an IDE -- but I used a cleverly > placed putStrLn to see that it was actually working, just really really > slowly. Is there a solution to this speed problem or should I use a package > that's more suited to 2D applications like this? Also, if I should use > another package, are there any suggestions for which to use? Thanks for any > help.
Hi, Although you can use Vertex* to put a single Point on the screen, it is not meant to be used as some kind of setPixel function. If your goal is simply to set pixels' value of a raster, you can still use OpenGL but should use a single textured quad (and thus manipulate the texture's pixels). There other possibilities to deal with raster graphics: - Use gtk; i.e. something like http://hackage.haskell.org/package/AC-EasyRaster-GTK - Output the data in some image format (if you want to do it yourself, the most simple is PPM) - Use X11 directly (if you're on unix) - ... HTH, Thu _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
