Tweak vbo

This commit is contained in:
2021-06-11 21:04:42 +02:00
parent afece392f7
commit c2360a5f0f
2 changed files with 24 additions and 23 deletions
+9 -8
View File
@@ -117,13 +117,13 @@ The shader is made up of files begining with the inputted string with extensions
makeShader
:: String -- ^ First part of the name of the shader
-> [ShaderType] -- ^ Filetype extensions
-> [(GLuint,Int)] -- ^ The shaders input vertices (location, size)
-> [Int] -- ^ The input vertex sizes
-> PrimitiveMode
-> (RenderType -> [[[Float]]]) -- ^ Poke strategy: method for creating a list of vertex data to be bound
-> IO (FullShader)
makeShader s shaderlist alocs pm renStrat = do
makeShader s shaderlist sizes pm renStrat = do
(prog,unis) <- makeSourcedShader s shaderlist
vaob <- setupVAO alocs
vaob <- setupVAO sizes
return $ FullShader { _shaderProgram = prog
, _shaderMatrixUniform = unis
, _shaderVAO = vaob
@@ -143,13 +143,13 @@ numDrawableElements :: Int
{-# INLINE numDrawableElements #-}
numDrawableElements = 50000
setupVAO :: [(GLuint,Int)] -> IO VAO
setupVAO ps = do
setupVAO :: [Int] -> IO VAO
setupVAO sizes = do
theVAO <- genObjectName
bindVertexArrayObject $= Just theVAO
theVBO <- setupVBO $ map snd ps
vbos <- forM ps setupArrayBuffer
ptrs <- forM (zip vbos $ map snd ps) setupVBOPointers
theVBO <- setupVBO $ sizes
vbos <- forM (zip (map fromIntegral [(0::Int)..]) sizes) setupArrayBuffer
ptrs <- forM (zip vbos sizes) setupVBOPointers
return $ VAO
{ _vao = theVAO
, _vaoBufferTargets = ptrs
@@ -182,6 +182,7 @@ setupVertexAttribPointer
setupVertexAttribPointer loc siz strd off = do
vertexAttribPointer (AttribLocation (fi loc)) $=
(ToFloat, VertexArrayDescriptor (fi' siz) Float (fi'' $ floatSize * strd) (bufferOffset off))
vertexAttribArray (AttribLocation (fi loc)) $= Enabled
where
fi = fromIntegral
fi' = fromIntegral