Add shading for shapes and the floor
This commit is contained in:
@@ -53,12 +53,14 @@ makeShader4 ::
|
||||
[GLenum] ->
|
||||
-- | The input vertex sizes
|
||||
[Int] ->
|
||||
-- | The stride
|
||||
Int ->
|
||||
EPrimitiveMode ->
|
||||
VBO ->
|
||||
IO FullShader
|
||||
makeShader4 s shaderlist sizes pm vbo = do
|
||||
makeShader4 s shaderlist sizes strd pm vbo = do
|
||||
prog <- makeSourcedShader s shaderlist
|
||||
vao <- setupVAOvbo sizes vbo
|
||||
vao <- setupVAOvbo sizes strd vbo
|
||||
return $ FullShader
|
||||
{ _shadName = prog
|
||||
, _shadVAO = vao
|
||||
@@ -163,11 +165,11 @@ shaderTypeExt' _ = undefined
|
||||
setupVAO :: [Int] -> IO (VAO,VBO)
|
||||
setupVAO = setupVAOSized numDrawableElements
|
||||
|
||||
setupVAOvbo :: [Int] -> VBO -> IO VAO
|
||||
setupVAOvbo sizes vbo = do
|
||||
setupVAOvbo :: [Int] -> Int -> VBO -> IO VAO
|
||||
setupVAOvbo sizes strd vbo = do
|
||||
vaoname <- mglCreate glCreateVertexArrays
|
||||
glBindVertexArray vaoname
|
||||
setupVertexAttribs vbo vaoname sizes
|
||||
setupVertexAttribs vbo vaoname sizes strd
|
||||
return $ VAO
|
||||
{ _vaoName = vaoname
|
||||
}
|
||||
@@ -206,13 +208,12 @@ setupVBOSized ndraw vao sizes = do
|
||||
strd = sum sizes
|
||||
offs = scanl (+) 0 sizes
|
||||
|
||||
setupVertexAttribs :: VBO -> GLuint -> [Int] -> IO ()
|
||||
setupVertexAttribs vbo vao sizes = do
|
||||
setupVertexAttribs :: VBO -> GLuint -> [Int] -> Int -> IO ()
|
||||
setupVertexAttribs vbo vao sizes strd = do
|
||||
glVertexArrayVertexBuffer vao 0 (vbo ^. vboName) 0 (fromIntegral $ floatSize * strd)
|
||||
forM_ (zip3 [0 ..] sizes offs) $ \(loc, siz, off) -> do
|
||||
setupVertexAttribPointer vao loc siz off
|
||||
where
|
||||
strd = sum sizes
|
||||
offs = scanl (+) 0 sizes
|
||||
|
||||
-- | Assumes the correct VBO is bound
|
||||
|
||||
Reference in New Issue
Block a user