[HOpenGL] Depth problem

Balazs Komuves bkomuves at gmail.com
Tue Oct 26 14:03:34 EDT 2010


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 <ben.christy at gmail.com> wrote:

> 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 at haskell.org
> http://www.haskell.org/mailman/listinfo/hopengl
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/hopengl/attachments/20101026/6db8a5f0/attachment.html


More information about the HOpenGL mailing list