Performance tweaks
This commit is contained in:
+7
-4
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user