From cd46998e0532a880e52ca30596f8d8d48e2a3110 Mon Sep 17 00:00:00 2001 From: justin Date: Thu, 13 Apr 2023 00:13:36 +0100 Subject: [PATCH] Continue shader refactor --- src/Preload/Render.hs | 8 ++++---- src/Shader/Compile.hs | 14 +++++++------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Preload/Render.hs b/src/Preload/Render.hs index 6ab953792..e630d3e8c 100644 --- a/src/Preload/Render.hs +++ b/src/Preload/Render.hs @@ -68,7 +68,7 @@ preloadRender = do -- setup shape geometry/cap VBO and two VAOs putStrLn "Setup shape VBO, VAO, EBO" - shVBO <- setupVBO (nShapeVerxComp) + shVBO <- setupVBO' (floatSize * nShapeVerxComp) shPosVAO <- setupVAOUsingVBO [VertexAttribute 4 GL_FLOAT GL_FALSE 0] shVBO shEBO <- setupEBO shPosVAO -- 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" let wallverxstrd = 8 - wallvbo <- setupVBO (wallverxstrd) - winvbo <- setupVBO (8) + wallvbo <- setupVBO' (floatSize * wallverxstrd) + winvbo <- setupVBO' (floatSize * 8) windowshader <- makeShaderUsingVBO "wall/blank" [vert, geom, frag] (toFloatVAs [4, 4]) pmPoints winvbo wallshader <- makeShaderUsingVBO "wall/basic" [vert, geom, frag] (toFloatVAs [4, 4]) pmPoints wallvbo putStrLn "Setup lighting shaders" @@ -143,7 +143,7 @@ preloadRender = do putStrLn "Setup cloud VBO, shader" let cloudverxsizes = [4, 4, 4, 4] - cloudvbo <- setupVBO (sum cloudverxsizes) + cloudvbo <- setupVBO' (floatSize * sum cloudverxsizes) (cloudshader, cloudebo) <- makeShaderEBO "cloud/basic" [vert, frag] cloudverxsizes pmTriangles cloudvbo framebuf2 <- newTextureFramebuffer diff --git a/src/Shader/Compile.hs b/src/Shader/Compile.hs index 09b93a4b7..e5b62871f 100644 --- a/src/Shader/Compile.hs +++ b/src/Shader/Compile.hs @@ -1,5 +1,5 @@ module Shader.Compile ( - setupVBO, + setupVBO', setupVBOStatic, makeShaderEBO, makeShaderVBO, @@ -89,17 +89,17 @@ makeShaderUsingVBO s shaderlist sizes pm vbo = do vao <- setupVAOUsingVBO sizes vbo makeShaderUsingVAO s shaderlist pm vao -setupVBO :: Int -> IO VBO -setupVBO vertexsize = do +setupVBO' :: Int -> IO VBO +setupVBO' vertexsize = do vboname <- mglCreate glCreateBuffers - thePtr <- mallocArray (vertexsize * numDrawableElements) + thePtr <- mallocBytes (vertexsize * numDrawableElements) -- Allocate space glNamedBufferData vboname - (fromIntegral $ floatSize * numDrawableElements * vertexsize) + (fromIntegral $ numDrawableElements * vertexsize) nullPtr 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 specified number and type of vertices @@ -249,7 +249,7 @@ setupVBOVAO :: [Int] -> IO (VAO, VBO) setupVBOVAO sizes = do vaoname <- mglCreate glCreateVertexArrays glBindVertexArray vaoname - vbo <- setupVBO (sum sizes) + vbo <- setupVBO' (floatSize * sum sizes) --vao <- setupVAOvbo (toFloatVAs sizes) (sum sizes) (vbo ^. vboName) vao <- setupVAOUsingVBO (toFloatVAs sizes) vbo return (vao,vbo)