Cleanup
This commit is contained in:
+2
-2
@@ -30,8 +30,8 @@ bufferEBO x i =
|
||||
glNamedBufferSubData (x ^. uiboName) 0 (fromIntegral $ gluintSize * i) (x ^. uiboPtr)
|
||||
|
||||
bufferShaderLayers
|
||||
:: MV.MVector (PrimState IO) (GLuint, VBO) -> UMV.MVector (PrimState IO) Int -> IO ()
|
||||
bufferShaderLayers shads counts = MV.imapM_ f shads
|
||||
:: UMV.MVector (PrimState IO) Int -> MV.MVector (PrimState IO) (GLuint, VBO) -> IO ()
|
||||
bufferShaderLayers counts = MV.imapM_ f
|
||||
where
|
||||
f i shad = do
|
||||
let theVBO = snd shad
|
||||
|
||||
+1
-53
@@ -32,10 +32,7 @@ makeShaderVBO ::
|
||||
makeShaderVBO s shaderlist sizes = do
|
||||
prog <- makeSourcedShader s shaderlist
|
||||
vbo <- setupVBO (vasTightStride sizes)
|
||||
return
|
||||
( prog
|
||||
, vbo
|
||||
)
|
||||
return (prog , vbo)
|
||||
|
||||
setupVBO :: Int -> IO VBO
|
||||
setupVBO vertexsize = do
|
||||
@@ -66,28 +63,6 @@ shaderTypeExt GL_FRAGMENT_SHADER = ".frag"
|
||||
shaderTypeExt GL_COMPUTE_SHADER = ".comp"
|
||||
shaderTypeExt _ = undefined
|
||||
|
||||
setupVAOUsingVBO :: [VertexAttribute] -> VBO -> IO VAO
|
||||
setupVAOUsingVBO vas vbo = do
|
||||
let strd = vbo ^. vboVertexBytes
|
||||
vaoname <- mglCreate glCreateVertexArrays
|
||||
glBindVertexArray vaoname
|
||||
setupVertexAttribs
|
||||
(vbo ^. vboName)
|
||||
vaoname
|
||||
vas
|
||||
(fromIntegral strd)
|
||||
return $ VAO vaoname
|
||||
|
||||
setupVBOVAO :: [VertexAttribute] -> IO (VAO, VBO)
|
||||
setupVBOVAO vas = do
|
||||
vaoname <- mglCreate glCreateVertexArrays
|
||||
glBindVertexArray vaoname
|
||||
vbo <- setupVBO strd
|
||||
vao <- setupVAOUsingVBO vas vbo
|
||||
return (vao, vbo)
|
||||
where
|
||||
strd = vasTightStride vas
|
||||
|
||||
toFloatVAs :: [Int] -> [VertexAttribute]
|
||||
toFloatVAs = go 0
|
||||
where
|
||||
@@ -96,31 +71,6 @@ toFloatVAs = go 0
|
||||
VertexAttribute (fromIntegral i) GL_FLOAT GL_FALSE x :
|
||||
go (x + fromIntegral floatSize * fromIntegral i) is
|
||||
|
||||
setupVertexAttribs :: GLuint -> GLuint -> [VertexAttribute] -> GLsizei -> IO ()
|
||||
setupVertexAttribs vbo vao vas strd = do
|
||||
glVertexArrayVertexBuffer vao 0 vbo 0 strd
|
||||
zipWithM_ (setupVertexAttribPointer vao) [0 ..] vas
|
||||
|
||||
-- | Assumes the correct VBO is bound
|
||||
setupVertexAttribPointer ::
|
||||
GLuint ->
|
||||
-- | Location (in shader)
|
||||
Int ->
|
||||
VertexAttribute ->
|
||||
IO ()
|
||||
setupVertexAttribPointer vao loc va = do
|
||||
glEnableVertexArrayAttrib vao loc'
|
||||
glVertexArrayAttribFormat
|
||||
vao
|
||||
loc'
|
||||
(va ^. vaCount)
|
||||
(va ^. vaType)
|
||||
(va ^. vaNormalize)
|
||||
(va ^. vaOffset)
|
||||
glVertexArrayAttribBinding vao loc' 0
|
||||
where
|
||||
loc' = fromIntegral loc
|
||||
|
||||
makeShaderProgram :: String -> [(GLenum, BS.ByteString)] -> IO GLuint
|
||||
makeShaderProgram str srcs = do
|
||||
theprog <- glCreateProgram
|
||||
@@ -208,5 +158,3 @@ withByteString :: Num t => BS.ByteString -> (Ptr b -> t -> IO a) -> IO a
|
||||
withByteString bs act =
|
||||
BU.unsafeUseAsCStringLen bs $ \(ptr, size) ->
|
||||
act (castPtr ptr) (fromIntegral size)
|
||||
|
||||
--boVertex
|
||||
|
||||
Reference in New Issue
Block a user