From a1389ba52468932830b6736da58bbe17f1912fa5 Mon Sep 17 00:00:00 2001 From: Stefan Dresselhaus Date: Tue, 22 Apr 2014 16:25:29 +0200 Subject: [PATCH] prepared overview-texture --- src/Main.hs | 2 ++ src/Map/Creation.hs | 2 +- src/Render/Render.hs | 76 ++++++++++++++++++++++++++++++++++++++++++++ src/Types.hs | 1 + 4 files changed, 80 insertions(+), 1 deletion(-) diff --git a/src/Main.hs b/src/Main.hs index 9642928..a361524 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -84,6 +84,7 @@ main = --generate map vertices (mapBuffer, vert) <- getMapBufferObject (mapprog, ci, ni, vi, pri, vii, mi, nmi, tli, tlo, mapTex) <- initMapShader + overTex <- GL.genObjectName print window' eventQueue <- newTQueueIO :: IO (TQueue Event) putStrLn "foo" @@ -123,6 +124,7 @@ main = , _mapVert = vert , _mapProgram = mapprog , _mapTexture = mapTex + , _overviewTexture = overTex } env = Env { _eventsChan = eventQueue diff --git a/src/Map/Creation.hs b/src/Map/Creation.hs index 31703ae..949fd97 100644 --- a/src/Map/Creation.hs +++ b/src/Map/Creation.hs @@ -30,5 +30,5 @@ type Seed = (XCoord, ZCoord) -- | Add lakes on generated Map from (possible) Seeds noted before. -- -- TODO: implement and erode terrain on the way down. -addLakes :: PlayMap -> [Seeds] -> PlayMap +addLakes :: PlayMap -> [Seed] -> PlayMap addLakes m s = undefined diff --git a/src/Render/Render.hs b/src/Render/Render.hs index c348f25..66702aa 100644 --- a/src/Render/Render.hs +++ b/src/Render/Render.hs @@ -180,6 +180,82 @@ initRendering = do glCullFace gl_BACK checkError "initRendering" +{-renderOverview :: Pioneers () +renderOverview = do + liftIO $ do + ---- RENDER OVERVIEW MAP ------------------------------------------ + + + bindFramebuffer Framebuffer $= (state ^. gl.glFramebuffer) + bindRenderbuffer Renderbuffer $= (state ^. gl.glRenderbuffer) + framebufferRenderbuffer + Framebuffer + DepthAttachment + Renderbuffer + (state ^. gl.glRenderbuffer) + textureBinding Texture2D $= Just (state ^. gl.glMap.mapTexture) + + framebufferTexture2D + Framebuffer + (ColorAttachment 0) + Texture2D + (state ^. gl.glMap.mapTexture) + 0 + + -- Render to FrameBufferObject + drawBuffers $= [FBOColorAttachment 0] + checkError "setup Render-Target" + + clear [ColorBuffer, DepthBuffer] + checkError "clear buffer" + + + currentProgram $= Just (state ^. gl.glMap.mapProgram) + + checkError "setting up buffer" + --set up projection (= copy from state) + with (distribute frust) $ \ptr -> + glUniformMatrix4fv proj 1 0 (castPtr (ptr :: Ptr (L.M44 CFloat))) + checkError "copy projection" + + --set up camera + let ! cam = getCam camPos zDist' xa ya + with (distribute cam) $ \ptr -> + glUniformMatrix4fv vmat 1 0 (castPtr (ptr :: Ptr (L.M44 CFloat))) + checkError "copy cam" + + --set up normal--Mat transpose((model*camera)^-1) + let normal' = (case L.inv33 (fmap (^. L._xyz) cam ^. L._xyz) of + (Just a) -> a + Nothing -> L.eye3) :: L.M33 CFloat + nmap = collect id normal' :: L.M33 CFloat --transpose... + + with (distribute nmap) $ \ptr -> + glUniformMatrix3fv nmat 1 0 (castPtr (ptr :: Ptr (L.M33 CFloat))) + + checkError "nmat" + + glUniform1f tli (fromIntegral tessFac) + glUniform1f tlo (fromIntegral tessFac) + + bindBuffer ArrayBuffer $= Just map' + vertexAttribPointer ci $= fgColorIndex + vertexAttribArray ci $= Enabled + vertexAttribPointer ni $= fgNormalIndex + vertexAttribArray ni $= Enabled + vertexAttribPointer vi $= fgVertexIndex + vertexAttribArray vi $= Enabled + checkError "beforeDraw" + + glPatchParameteri gl_PATCH_VERTICES 3 + + cullFace $= Just Front + + glDrawArrays gl_PATCHES 0 (fromIntegral numVert) + checkError "draw map" +-} + + render :: Pioneers () render = do state <- RWS.get diff --git a/src/Types.hs b/src/Types.hs index c22735b..3c0ea54 100644 --- a/src/Types.hs +++ b/src/Types.hs @@ -89,6 +89,7 @@ data GLMapState = GLMapState , _mapVert :: !GL.NumArrayIndices , _mapProgram :: !GL.Program , _mapTexture :: !TextureObject + , _overviewTexture :: !TextureObject } data GLHud = GLHud