Continue shader refactor

This commit is contained in:
2023-04-13 00:13:36 +01:00
parent 500b2bb2be
commit cd46998e05
2 changed files with 11 additions and 11 deletions
+4 -4
View File
@@ -68,7 +68,7 @@ preloadRender = do
-- setup shape geometry/cap VBO and two VAOs -- setup shape geometry/cap VBO and two VAOs
putStrLn "Setup shape VBO, VAO, EBO" putStrLn "Setup shape VBO, VAO, EBO"
shVBO <- setupVBO (nShapeVerxComp) shVBO <- setupVBO' (floatSize * nShapeVerxComp)
shPosVAO <- setupVAOUsingVBO [VertexAttribute 4 GL_FLOAT GL_FALSE 0] shVBO shPosVAO <- setupVAOUsingVBO [VertexAttribute 4 GL_FLOAT GL_FALSE 0] shVBO
shEBO <- setupEBO shPosVAO shEBO <- setupEBO shPosVAO
-- note the shape shader vao is distinct from the position vao, but they -- note the shape shader vao is distinct from the position vao, but they
@@ -83,8 +83,8 @@ preloadRender = do
putStrLn "Setup wall/windows VBO, VAO, EBO, shader" putStrLn "Setup wall/windows VBO, VAO, EBO, shader"
let wallverxstrd = 8 let wallverxstrd = 8
wallvbo <- setupVBO (wallverxstrd) wallvbo <- setupVBO' (floatSize * wallverxstrd)
winvbo <- setupVBO (8) winvbo <- setupVBO' (floatSize * 8)
windowshader <- makeShaderUsingVBO "wall/blank" [vert, geom, frag] (toFloatVAs [4, 4]) pmPoints winvbo windowshader <- makeShaderUsingVBO "wall/blank" [vert, geom, frag] (toFloatVAs [4, 4]) pmPoints winvbo
wallshader <- makeShaderUsingVBO "wall/basic" [vert, geom, frag] (toFloatVAs [4, 4]) pmPoints wallvbo wallshader <- makeShaderUsingVBO "wall/basic" [vert, geom, frag] (toFloatVAs [4, 4]) pmPoints wallvbo
putStrLn "Setup lighting shaders" putStrLn "Setup lighting shaders"
@@ -143,7 +143,7 @@ preloadRender = do
putStrLn "Setup cloud VBO, shader" putStrLn "Setup cloud VBO, shader"
let cloudverxsizes = [4, 4, 4, 4] let cloudverxsizes = [4, 4, 4, 4]
cloudvbo <- setupVBO (sum cloudverxsizes) cloudvbo <- setupVBO' (floatSize * sum cloudverxsizes)
(cloudshader, cloudebo) <- (cloudshader, cloudebo) <-
makeShaderEBO "cloud/basic" [vert, frag] cloudverxsizes pmTriangles cloudvbo makeShaderEBO "cloud/basic" [vert, frag] cloudverxsizes pmTriangles cloudvbo
framebuf2 <- newTextureFramebuffer framebuf2 <- newTextureFramebuffer
+7 -7
View File
@@ -1,5 +1,5 @@
module Shader.Compile ( module Shader.Compile (
setupVBO, setupVBO',
setupVBOStatic, setupVBOStatic,
makeShaderEBO, makeShaderEBO,
makeShaderVBO, makeShaderVBO,
@@ -89,17 +89,17 @@ makeShaderUsingVBO s shaderlist sizes pm vbo = do
vao <- setupVAOUsingVBO sizes vbo vao <- setupVAOUsingVBO sizes vbo
makeShaderUsingVAO s shaderlist pm vao makeShaderUsingVAO s shaderlist pm vao
setupVBO :: Int -> IO VBO setupVBO' :: Int -> IO VBO
setupVBO vertexsize = do setupVBO' vertexsize = do
vboname <- mglCreate glCreateBuffers vboname <- mglCreate glCreateBuffers
thePtr <- mallocArray (vertexsize * numDrawableElements) thePtr <- mallocBytes (vertexsize * numDrawableElements)
-- Allocate space -- Allocate space
glNamedBufferData glNamedBufferData
vboname vboname
(fromIntegral $ floatSize * numDrawableElements * vertexsize) (fromIntegral $ numDrawableElements * vertexsize)
nullPtr nullPtr
GL_STREAM_DRAW GL_STREAM_DRAW
return VBO{_vboName = vboname, _vboPtr = thePtr, _vboVertexBytes = floatSize * vertexsize} return VBO{_vboName = vboname, _vboPtr = thePtr, _vboVertexBytes = vertexsize}
-- the input ptr is assumed to contain the correct amount of data according to -- the input ptr is assumed to contain the correct amount of data according to
-- the specified number and type of vertices -- the specified number and type of vertices
@@ -249,7 +249,7 @@ setupVBOVAO :: [Int] -> IO (VAO, VBO)
setupVBOVAO sizes = do setupVBOVAO sizes = do
vaoname <- mglCreate glCreateVertexArrays vaoname <- mglCreate glCreateVertexArrays
glBindVertexArray vaoname glBindVertexArray vaoname
vbo <- setupVBO (sum sizes) vbo <- setupVBO' (floatSize * sum sizes)
--vao <- setupVAOvbo (toFloatVAs sizes) (sum sizes) (vbo ^. vboName) --vao <- setupVAOvbo (toFloatVAs sizes) (sum sizes) (vbo ^. vboName)
vao <- setupVAOUsingVBO (toFloatVAs sizes) vbo vao <- setupVAOUsingVBO (toFloatVAs sizes) vbo
return (vao,vbo) return (vao,vbo)