Refactor shader code

This commit is contained in:
2023-03-20 11:18:53 +00:00
parent 32ecf46343
commit f4038fde46
4 changed files with 48 additions and 4 deletions
+35
View File
@@ -1,6 +1,7 @@
module Shader.Compile (
setupVBO,
setupVBO',
makeShaderVAOEBO,
makeShader,
makeShader4,
makeByteStringShaderUsingVAO,
@@ -46,6 +47,28 @@ makeShader s shaderlist sizes pm = do
}
, vbo)
makeShaderVAOEBO ::
-- | First part of the name of the shader
String ->
-- | shader types
[GLenum] ->
-- | The input vertex sizes
[Int] ->
-- | The stride
Int ->
GLenum ->
VBO ->
IO (Shader, VAO, EBO)
makeShaderVAOEBO s shaderlist sizes strd pm vbo = do
prog <- makeSourcedShader s shaderlist
vao <- setupVAOvbo sizes strd vbo
ebo <- setupEBO vao
return
( Shader prog pm
, vao
, ebo
)
makeShader4 ::
-- | First part of the name of the shader
String ->
@@ -181,6 +204,18 @@ setupVAOvbo sizes strd vbo = do
{ _vaoName = vaoname
}
setupEBO :: VAO -> IO EBO
setupEBO vao = do
eboptr <- mallocArray numDrawableElements
eboname <- mglCreate glCreateBuffers
glNamedBufferData
eboname
( fromIntegral $ glushortSize * numDrawableElements)
nullPtr
GL_STREAM_DRAW
glVertexArrayElementBuffer (vao ^. vaoName) eboname
return $ EBO eboname eboptr
setupVAOSized :: Int -> [Int] -> IO (VAO,VBO)
setupVAOSized ndraw sizes = do
vaoname <- mglCreate glCreateVertexArrays