Tweak vbo
This commit is contained in:
+9
-8
@@ -117,13 +117,13 @@ The shader is made up of files begining with the inputted string with extensions
|
||||
makeShader
|
||||
:: String -- ^ First part of the name of the shader
|
||||
-> [ShaderType] -- ^ Filetype extensions
|
||||
-> [(GLuint,Int)] -- ^ The shaders input vertices (location, size)
|
||||
-> [Int] -- ^ The input vertex sizes
|
||||
-> PrimitiveMode
|
||||
-> (RenderType -> [[[Float]]]) -- ^ Poke strategy: method for creating a list of vertex data to be bound
|
||||
-> IO (FullShader)
|
||||
makeShader s shaderlist alocs pm renStrat = do
|
||||
makeShader s shaderlist sizes pm renStrat = do
|
||||
(prog,unis) <- makeSourcedShader s shaderlist
|
||||
vaob <- setupVAO alocs
|
||||
vaob <- setupVAO sizes
|
||||
return $ FullShader { _shaderProgram = prog
|
||||
, _shaderMatrixUniform = unis
|
||||
, _shaderVAO = vaob
|
||||
@@ -143,13 +143,13 @@ numDrawableElements :: Int
|
||||
{-# INLINE numDrawableElements #-}
|
||||
numDrawableElements = 50000
|
||||
|
||||
setupVAO :: [(GLuint,Int)] -> IO VAO
|
||||
setupVAO ps = do
|
||||
setupVAO :: [Int] -> IO VAO
|
||||
setupVAO sizes = do
|
||||
theVAO <- genObjectName
|
||||
bindVertexArrayObject $= Just theVAO
|
||||
theVBO <- setupVBO $ map snd ps
|
||||
vbos <- forM ps setupArrayBuffer
|
||||
ptrs <- forM (zip vbos $ map snd ps) setupVBOPointers
|
||||
theVBO <- setupVBO $ sizes
|
||||
vbos <- forM (zip (map fromIntegral [(0::Int)..]) sizes) setupArrayBuffer
|
||||
ptrs <- forM (zip vbos sizes) setupVBOPointers
|
||||
return $ VAO
|
||||
{ _vao = theVAO
|
||||
, _vaoBufferTargets = ptrs
|
||||
@@ -182,6 +182,7 @@ setupVertexAttribPointer
|
||||
setupVertexAttribPointer loc siz strd off = do
|
||||
vertexAttribPointer (AttribLocation (fi loc)) $=
|
||||
(ToFloat, VertexArrayDescriptor (fi' siz) Float (fi'' $ floatSize * strd) (bufferOffset off))
|
||||
vertexAttribArray (AttribLocation (fi loc)) $= Enabled
|
||||
where
|
||||
fi = fromIntegral
|
||||
fi' = fromIntegral
|
||||
|
||||
Reference in New Issue
Block a user