Fix picture vertex buffering bug

This commit is contained in:
2026-01-02 10:58:28 +00:00
parent 2c978b4de1
commit 119234af89
6 changed files with 67 additions and 62 deletions
+5 -3
View File
@@ -54,12 +54,14 @@ testSPic :: Config -> Universe -> SPic
testSPic cfig u = noShape $ testPic cfig u
testPic :: Config -> Universe -> Picture
testPic _ _ = setLayer DebugLayer
testPic _ _ = f
$ mempty
-- <> color white (line [0,10])
-- <> text "A"
<> color white (line [0,10])
<> text "A"
<> translate 20 20 (arc pi 0 10)
<> translate 0 20 (circleSolidCol white red 10)
where
f x = translate 5 20 (setLayer DebugLayer x) <> setLayer BloomLayer x
-- fold $ do
-- cr <- u ^? uvWorld . cWorld . lWorld . creatures . ix 0
---- return mempty
+1 -1
View File
@@ -20,7 +20,7 @@ data Verx = Verx
data Layer
= BloomLayer
| DebugLayer
| DebugLayer1
-- | DebugLayer1
| FixedCoordLayer
deriving (Eq, Ord, Enum, Bounded, Show, Read) --Generic, Flat)
+1
View File
@@ -228,6 +228,7 @@ renderLayer ::
IO ()
renderLayer layer shads counts = do
let layerCounts = UMV.slice (ln * numShads) numShads counts
putStrLn $ "layer: " <> show (ln * numShads)
MV.imapM_ (drawShaderLay ln layerCounts) shads
where
ln = fromEnum layer
+2
View File
@@ -10,7 +10,9 @@ import Shader.Parameters
drawShaderLay :: Int -> UMV.MVector (PrimState IO) Int -> Int -> (GLuint, VBO) -> IO ()
{-# INLINE drawShaderLay #-}
drawShaderLay l countsVector shadIn fs = do
putStr $ " shader: " <> show shadIn
i <- UMV.read countsVector shadIn
putStrLn $ " count: " <> show i
glUseProgram (fst fs)
glUniform1i 0 . fromIntegral $ (l * numSubElements)
-- if l == fromEnum DebugLayer && shadIn == 0 then print i else return ()
+1 -1
View File
@@ -39,7 +39,7 @@ bufferShaderLayers counts = MV.imapM_ f
VFSM.mapM_ (g stride theVBO) $ VFSM.enumFromStepN 0 1 numLayers -- [0..5]
where
g stride theVBO lay = do
numVs <- UMV.unsafeRead counts $ lay * numLayers + i
numVs <- UMV.unsafeRead counts $ lay * numShads + i
glNamedBufferSubData
(_vboName theVBO)
(fromIntegral $ floatSize * stride * numSubElements * lay)