Draw floors using vertex pulling
This commit is contained in:
+11
-7
@@ -1,23 +1,27 @@
|
||||
module Dodge.WorldLoad (postUniverseLoadSideEffect) where
|
||||
|
||||
import Shader.Parameters
|
||||
import Graphics.GL.Core45
|
||||
import Control.Lens
|
||||
import Control.Monad
|
||||
import Data.Preload.Render
|
||||
import Dodge.Data.Universe
|
||||
import Shader.Bind
|
||||
import Graphics.GL.Core45
|
||||
import Shader.Data
|
||||
import Shader.Parameters
|
||||
import Shader.Poke.Floor
|
||||
|
||||
postUniverseLoadSideEffect :: Universe -> Universe
|
||||
postUniverseLoadSideEffect = uvIOEffects %~
|
||||
(\f uv -> (uvWorld . cWorld) (postWorldLoad (uv ^. preloadData . renderData)) uv >>= f)
|
||||
postUniverseLoadSideEffect =
|
||||
uvIOEffects
|
||||
%~ (\f uv -> (uvWorld . cWorld) (postWorldLoad (uv ^. preloadData . renderData)) uv >>= f)
|
||||
|
||||
postWorldLoad :: RenderData -> CWorld -> IO CWorld
|
||||
postWorldLoad rdata cw = do
|
||||
nfloorvxs <- foldM (pokeTile (rdata ^. floorVBO . vboPtr)) 0 (cw ^. cwTiles)
|
||||
bufferPokedVBO (rdata ^. floorVBO) nfloorvxs
|
||||
let floorbo = (rdata ^. floorVBO . vboName)
|
||||
floorptr = (rdata ^. floorVBO . vboPtr)
|
||||
nfloorvxs <- foldM (pokeTile floorptr) 0 (cw ^. cwTiles)
|
||||
glInvalidateBufferData floorbo
|
||||
glNamedBufferStorage floorbo (fromIntegral $ 8 * nfloorvxs * floatSize) floorptr 0
|
||||
glBindBufferBase GL_SHADER_STORAGE_BUFFER 8 floorbo
|
||||
let chbo = rdata ^. chasmVBO . vboName
|
||||
chptr = rdata ^. chasmVBO . vboPtr
|
||||
nchasmvxs <- foldM (pokeChasm chptr) 0 (cw ^. chasms)
|
||||
|
||||
Reference in New Issue
Block a user