main = do
(progname, _) ← getArgsAndInitialize
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 120
changesRef ← newIORef Map.empty
--sceneRef ← newIORef buildSSG
sceneRef ← newIORef (SimpleRootNode "HomeWork3" [
TransformNode "camera" (Rotate 0 90 0) (Translate 0 0 (-1))
[
TransformNode "ground" (Rotate 0 0 0) (Translate (-4) (-1.5) (-4))
[
ModelNode "groundModel" (Just (buildModel ModernGL (heightMapToVerts(genHeightMap 2 1 1.6 1.2 1.7) 0.1 0 3)
(0,0,0) (buildShader defaultVertexShader defaultFragmentShader)))
]
]
])
--pollsRot ← newIORef 0
--evenState ← newIORef BackAgain
--evenPos ← newIORef 0.25
--oddState ← newIORef There
--oddPos ← newIORef 0.15
--balloonNumSteps ← newIORef 100
reshapeCallback $= Just reshape
displayCallback $= (displayScene sceneRef changesRef )
--addTimerCallback 10 (animate sceneRef pollsRot changesRef evenState evenPos oddState oddPos)
--keyboardMouseCallback $= Just (handleInput sceneRef changesRef)
mainLoop
displayScene sceneRef changesRef= do
--changes ← readIORef changesRef
--oldSceneGraph ← readIORef sceneRef
--sceneGraph ← return $ updateSceneGraph changes oldSceneGraph
--render identityMatrix sceneGraph
--writeIORef changesRef Map.empty
--writeIORef sceneRef sceneGraph
clear [ColorBuffer, DepthBuffer]
lighting $= Enabled
light (Light 0) $= Enabled
matrixMode $= Modelview 0
loadIdentity
[vbo] ← genObjectNames 1 :: IO [BufferObject]
bindBuffer ArrayBuffer $= Just vbo
tempArray ← newListArray (0, 8) [0,0,0,0,0.5,0,0.5,0.5,0.5] :: IO(StorableArray Int GLfloat)
withStorableArray tempArray (λptr ->
bufferData ArrayBuffer $= ((fromIntegral (9*4), ptr, StaticDraw)))
print " Setting attrib pointer"
vertexAttribArray (AttribLocation 1) $= Enabled
GLRaw.glVertexAttribPointer 1 3 GLRaw.gl_FLOAT 0 0 (plusPtr nullPtr (0))
clientState VertexArray $= Enabled
print "before draw"
drawArrays Triangles 0 3
print "after draw"
--resetAttribPtr program
bindBuffer ArrayBuffer $= Nothing
clientState VertexArray $= Disabled
return ()
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 120
matrixMode $= Modelview 0
loadIdentity
postRedisplay Nothing
On Thu, Nov 18, 2010 at 10:37 AM, Ben Christy
<ben.christy@gmail.com> wrote:
I have tried drawElements Triangles (fromIntegral 1) UnsignedInt nullPtr--(fromIntegral count)
Test.withArray [ (i) | i<-[0..count-1] ] $ \p -> drawElements Points10 UnsignedInt p
drawArrays Points 1 10
All three of which cause a segmentation thought. I am kind of at a loss, is it possible that the buffers are empty? If so what is the best way to check?