Cleanup render preload somewhat

This commit is contained in:
2023-03-24 01:10:53 +00:00
parent 8f727c70cf
commit 1aaafcdc5a
4 changed files with 55 additions and 90 deletions
+13 -19
View File
@@ -8,7 +8,7 @@ module Shader.Compile (
makeShaderSized,
makeShaderUsingVAO,
setupVAO,
setupVAOvbo,
setupVAOUsingVBO,
setupVAOvbo',
setupEBO,
setupVertexAttribPointer,
@@ -59,17 +59,14 @@ makeShaderEBO ::
[GLenum] ->
-- | The input vertex sizes
[Int] ->
-- | The stride
Int ->
PrimitiveMode ->
VBO ->
IO (Shader, EBO)
makeShaderEBO s shaderlist sizes strd pm vbo = do
prog <- makeSourcedShader s shaderlist
vao <- setupVAOvbo sizes strd vbo
ebo <- setupEBO vao
return
( Shader prog pm vao
makeShaderEBO s shaderlist sizes pm vbo = do
shad <- makeShaderUsingVBO s shaderlist sizes pm vbo
ebo <- setupEBO (shad ^. shaderVAO)
glVertexArrayElementBuffer (shad ^. shaderVAO . vaoName) (ebo ^. eboName)
return ( shad
, ebo
)
@@ -84,10 +81,7 @@ makeShaderUsingVBO ::
VBO ->
IO Shader
makeShaderUsingVBO s shaderlist sizes pm vbo = do
let strd = vbo ^. vboVertexSize
when (strd < sum sizes) $
error "Tried to assign vertex attributes to VBO with too small a stride."
vao <- setupVAOvbo sizes strd vbo
vao <- setupVAOUsingVBO sizes vbo
makeShaderUsingVAO s shaderlist pm vao
setupVBO :: Int -> IO VBO
@@ -205,15 +199,15 @@ setupVAOvbo' sizes strd vbo = do
{ _vaoName = vaoname
}
setupVAOvbo :: [Int] -> Int -> VBO -> IO VAO
setupVAOvbo sizes strd vbo = do
setupVAOUsingVBO :: [Int] -> VBO -> IO VAO
setupVAOUsingVBO sizes vbo = do
let strd = vbo ^. vboVertexSize
when (strd < sum sizes) $
error "Tried to assign vertex attributes to VBO with too small a stride."
vaoname <- mglCreate glCreateVertexArrays
glBindVertexArray vaoname
setupVertexAttribs vbo vaoname sizes strd
return $
VAO
{ _vaoName = vaoname
}
return VAO { _vaoName = vaoname }
setupEBO :: VAO -> IO EBO
setupEBO vao = do