Refactor shader code
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user