Re: problem with displayCallback and Double buffering

Sven Panne <[email protected]>
Newsgroups gmane.comp.lang.haskell.hopengl
Message-ID <[email protected]>
Marc A. Ziegert wrote:
 > does anyone else have this problem?  i want to use double buffering,
 > but swapBuffers does not seem to work.

Works for me with the current version from CVS on x86 Linux, see below.

 > to set the active window to... the active window (i think that has
 > to work!) does not work, too. [...]

I guess with "active" you mean "current", but this works for me, too.
Remember that you can't access currentWindow (or windowPosition,
windowSize, etc.) before mainLoop is entered, this is how GLUT works.

Cheers,
    S.

----------------------------------------------------------------------
import Graphics.UI.GLUT

dc :: DisplayCallback
dc = do
    clearColor $= Color4 0 0 1 0
    clear [ColorBuffer, DepthBuffer]
    putStrLn "begin swapBuffers"
    swapBuffers
    putStrLn "end swapBuffers"

main :: IO ()
main = do
    getArgsAndInitialize
    initialDisplayMode $= [DoubleBuffered, WithDepthBuffer]
    b <- get displayModePossible
    putStrLn $ "displayModePossible? ..." ++ show b
    createWindow "main"
    displayCallback $= dc
    mainLoop
----------------------------------------------------------------------
panne@jeanluc:~> ghc --make first.hs
Chasing modules from: first.hs
Compiling Main             ( first.hs, first.o )
Linking ...
panne@jeanluc:~> ./a.out
displayModePossible? ...True
begin swapBuffers
end swapBuffers
[ blue window appears, iconized it and de-iconized it again ]
begin swapBuffers
end swapBuffers
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.