Performance tweaks

This commit is contained in:
2021-09-18 15:38:46 +01:00
parent 2d8f1089a1
commit 80aa67015c
10 changed files with 194 additions and 160 deletions
+7 -4
View File
@@ -38,6 +38,7 @@ import Control.Monad
import Graphics.Rendering.OpenGL hiding (color,scale,translate,rotate)
import qualified SDL
import qualified Data.Vector.Unboxed.Mutable as UMV
import qualified Data.Vector.Fusion.Stream.Monadic as VS
doDrawing :: RenderData -> World -> IO Word32
doDrawing pdata w = do
@@ -56,12 +57,14 @@ doDrawing pdata w = do
-- poke wall points and colors
nWalls <- poke224s (shadVBOptr $ _wallTextureShader pdata) wallPointsCol
nSils <- pokePoint3s (shadVBOptr $ _lightingLineShadowShader pdata)
$ (_shEdges $ worldShape w)
++ _foregroundEdgeVerx w
$ VS.fromList
$ (shEList $ worldShape w)
++ (_foregroundEdgeVerx w)
-- poke foreground geometry for caps
nCaps <- pokePoint3s (shadVBOptr $ _lightingCapShader pdata)
$ VS.fromList
$ concatMap polyToGeoRender (foregroundPics w)
++ map _svPos (_shVertices $ worldShape w)
++ (fmap _svPos (shVList $ worldShape w))
-- bind wall points, silhouette data, surface geometry
uncurry bindShaderBuffers $ unzip
[ ( _wallTextureShader pdata, nWalls)
@@ -91,7 +94,7 @@ doDrawing pdata w = do
renderLayer 0 shadV layerCounts
numShapeVs <- pokeShapeVs (_vboPtr $ _vaoVBO $ _shadVAO $ _shapeShader pdata)
$ _shVertices $ worldShape w
$ VS.fromList $ shVList $ worldShape w
bindShaderBuffers [_shapeShader pdata] [numShapeVs]
drawShader (_shapeShader pdata) numShapeVs