Implement custom poking for vertices--speed regression?

This commit is contained in:
2021-07-29 18:46:01 +02:00
parent 02a9f4badf
commit 192e2c9c57
8 changed files with 184 additions and 139 deletions
+9 -4
View File
@@ -7,6 +7,7 @@ module Shader
, drawShader
, freeShaderPointers
, drawShaderLay
, shadVBOptr
) where
--import Geometry.Data
import Shader.Data
@@ -32,7 +33,7 @@ bindArrayBuffers numVs theVBO = do
WriteToBuffer
0
(fromIntegral $ floatSize * numVs * sum (_vboAttribSizes theVBO))
(_vboPointer theVBO)
(_vboPtr theVBO)
bindArrayBuffersLayer' :: Int -> Int -> VBO -> IO ()
bindArrayBuffersLayer' lay numVs theVBO = do
@@ -42,7 +43,7 @@ bindArrayBuffersLayer' lay numVs theVBO = do
WriteToBuffer
(fromIntegral $ floatSize * stride * numSubElements * lay)
(fromIntegral $ floatSize * numVs * stride)
(_vboPointer theVBO `plusPtr` (floatSize * stride * numSubElements * lay))
(_vboPtr theVBO `plusPtr` (floatSize * stride * numSubElements * lay))
where
stride = sum $ _vboAttribSizes theVBO
@@ -54,7 +55,7 @@ bindArrayBuffersLayer numVs lay theVBO = do
WriteToBuffer
(fromIntegral $ floatSize * stride * numSubElements * lay)
(fromIntegral $ floatSize * numVs * stride)
(_vboPointer theVBO `plusPtr` (floatSize * stride * numSubElements * lay))
(_vboPtr theVBO `plusPtr` (floatSize * stride * numSubElements * lay))
where
stride = sum $ _vboAttribSizes theVBO
@@ -100,4 +101,8 @@ drawShader fs i = do
glDrawArrays (marshalEPrimitiveMode $ _shaderDrawPrimitive fs) 0 (fromIntegral i)
freeShaderPointers :: FullShader -> IO ()
freeShaderPointers fs = free $ _vboPointer $ _vaoVBO $ _shaderVAO fs
freeShaderPointers fs = free $ _vboPtr $ _vaoVBO $ _shaderVAO fs
shadVBOptr :: FullShader -> Ptr Float
shadVBOptr = _vboPtr . _vaoVBO . _shaderVAO