
I am taking a graphics class and I have a problem I have not been able to resolve. When I translate along the Z axis objects are clipped before their size changes. It almost seems likes its stuck using a ortho prjojection some how. That being said the clip plan is very close and to me does not resemble the one I set in gluPerspective. It starts to clip after being translated -0.6 units down the z axis. Attached is the code that I use to setup the projection matrix. main = do (progname, _) ← getArgsAndInitialize --initialContextVersion 3 0 createWindow "Ben Christy Assignment 2" windowSize $= Size 800 600 matrixMode $= Projection loadIdentity depthFunc $= Just Less viewport $= (Position 0 0, Size 800 600) perspective 60 1.333 1 1200 --tableModel ← initModelVBO (vertexTupleListToVertexList table) changesRef ← newIORef Map.empty sceneRef ← newIORef buildSSG balloonState ← newIORef There balloonZTarget ← newIORef 4 balloonZStart ← newIORef 0 balloonStep ← newIORef 0 balloonNumSteps ← newIORef 0 reshapeCallback $= Just reshape displayCallback $= (displayScene sceneRef changesRef ) --addTimerCallback 10 (animate sceneRef changesRef balloonState balloonZTarget balloonZStart balloonStep balloonNumSteps) keyboardMouseCallback $= Just (handleInput sceneRef changesRef) mainLoop reshape (Size w h) = do print "resize" matrixMode $= Projection loadIdentity depthFunc $= Just Less viewport $= (Position 0 0, Size w h) perspective 60 1.333 0.01 1200 matrixMode $= Modelview 1 loadIdentity postRedisplay Nothing

Hi, Without seeing the full program, I'm just guessing, but here are some possible issues: matrixMode $= Modelview 1
loadIdentity
I think that should be Modelview 0. Also, do you have the same in the
display callback?
You should reset it each time you draw a frame, and then set the correct
translation
depending on the time.
Similarly, though not required, I recommend to set the projection matrix in
each frame
(in the display callback); the reshape callback should just store the screen
size in a global variable
(some people would say global variables in Haskell are a heresy, but I
disagree :)
Also, the 1200 / 0.01 far/near ratio is very large; because of how the depth
buffer works, you
want this ratio as small as possible given your application. See e.g.
http://www.opengl.org/resources/faq/technical/depthbuffer.htm
for details.
Balazs
On Mon, Oct 25, 2010 at 12:52 AM, Ben Christy
I am taking a graphics class and I have a problem I have not been able to resolve. When I translate along the Z axis objects are clipped before their size changes. It almost seems likes its stuck using a ortho prjojection some how. That being said the clip plan is very close and to me does not resemble the one I set in gluPerspective. It starts to clip after being translated -0.6 units down the z axis.
Attached is the code that I use to setup the projection matrix.
main = do (progname, _) ← getArgsAndInitialize --initialContextVersion 3 0 createWindow "Ben Christy Assignment 2" windowSize $= Size 800 600 matrixMode $= Projection loadIdentity depthFunc $= Just Less viewport $= (Position 0 0, Size 800 600) perspective 60 1.333 1 1200 --tableModel ← initModelVBO (vertexTupleListToVertexList table) changesRef ← newIORef Map.empty sceneRef ← newIORef buildSSG balloonState ← newIORef There balloonZTarget ← newIORef 4 balloonZStart ← newIORef 0 balloonStep ← newIORef 0 balloonNumSteps ← newIORef 0 reshapeCallback $= Just reshape displayCallback $= (displayScene sceneRef changesRef ) --addTimerCallback 10 (animate sceneRef changesRef balloonState balloonZTarget balloonZStart balloonStep balloonNumSteps) keyboardMouseCallback $= Just (handleInput sceneRef changesRef) mainLoop reshape (Size w h) = do print "resize" matrixMode $= Projection loadIdentity depthFunc $= Just Less viewport $= (Position 0 0, Size w h) perspective 60 1.333 0.01 1200 matrixMode $= Modelview 1 loadIdentity postRedisplay Nothing
_______________________________________________ HOpenGL mailing list HOpenGL@haskell.org http://www.haskell.org/mailman/listinfo/hopengl
participants (2)
-
Balazs Komuves
-
Ben Christy