Start to separate VAO and VBO data types
This commit is contained in:
@@ -59,8 +59,8 @@ preloadRender = do
|
||||
glBindVertexArray wpColVAOname
|
||||
setupVertexAttribPointer wpColVAOname wpVBOname 0 4 8 0
|
||||
setupVertexAttribPointer wpColVAOname wpVBOname 1 4 8 4
|
||||
let wpVAO = VAO{_vaoName = wpVAOname, _vaoVBO = wpVBO}
|
||||
wpColVAO = VAO{_vaoName = wpColVAOname, _vaoVBO = wpVBO}
|
||||
let wpVAO = VAO{_vaoName = wpVAOname, _vaoVBO = wpVBO, _vaoAttribSizes = [4], _vaoStride = 8}
|
||||
wpColVAO = VAO{_vaoName = wpColVAOname, _vaoVBO = wpVBO, _vaoAttribSizes = [4,4], _vaoStride = 8}
|
||||
-- setup window points VBO, VAOs and shaders
|
||||
winVBOname <- mglCreate glCreateBuffers
|
||||
winVBOptr <- mallocArray (8 * numDrawableWalls)
|
||||
@@ -75,7 +75,8 @@ preloadRender = do
|
||||
glBindVertexArray winColVAOname
|
||||
setupVertexAttribPointer winColVAOname winVBOname 0 4 8 0
|
||||
setupVertexAttribPointer winColVAOname winVBOname 1 4 8 4
|
||||
let winColVAO = VAO{_vaoName = winColVAOname, _vaoVBO = winVBO}
|
||||
let winColVAO = VAO
|
||||
{_vaoName = winColVAOname, _vaoVBO = winVBO, _vaoAttribSizes = [4,4], _vaoStride = 8}
|
||||
-- setup shape geometry/cap VBO and two VAOs
|
||||
shEBOptr <- mallocArray numDrawableElements
|
||||
shEBOname <- mglCreate glCreateBuffers
|
||||
@@ -107,8 +108,9 @@ preloadRender = do
|
||||
setupVertexAttribPointer shPosVAOname shVBOname 0 3 7 0
|
||||
--bindBuffer ElementArrayBuffer $= Just shEBOname
|
||||
glVertexArrayElementBuffer shPosVAOname shEBOname
|
||||
let shPosColVAO = VAO{_vaoName = shPosColVAOname, _vaoVBO = shVBO}
|
||||
shPosVAO = VAO{_vaoName = shPosVAOname, _vaoVBO = shVBO}
|
||||
let shPosColVAO = VAO
|
||||
{_vaoName = shPosColVAOname, _vaoVBO = shVBO, _vaoAttribSizes = [3,4], _vaoStride = 7}
|
||||
shPosVAO = VAO{_vaoName = shPosVAOname, _vaoVBO = shVBO, _vaoAttribSizes = [3], _vaoStride = 7}
|
||||
--setup silhouette edge VAO
|
||||
--shEdgeVAOname <- genObjectName
|
||||
--bindVertexArrayObject $= Just shEdgeVAOname
|
||||
@@ -127,7 +129,8 @@ preloadRender = do
|
||||
nullPtr
|
||||
GL_STREAM_DRAW
|
||||
let silEBO = EBO{_eboName = silEBOname, _eboPtr = silEBOptr}
|
||||
shEdgeVAO = VAO{_vaoName = shEdgeVAOname, _vaoVBO = shVBO}
|
||||
shEdgeVAO = VAO{_vaoName = shEdgeVAOname, _vaoVBO = shVBO, _vaoAttribSizes = [3], _vaoStride = 7}
|
||||
-- shEdgeVAO is unecessary?
|
||||
-- lighting shaders
|
||||
lightingWallShadShad <-
|
||||
makeShaderUsingVAO "lighting/wallShadow" [vert, geom, frag] EPoints wpVAO
|
||||
|
||||
@@ -135,6 +135,8 @@ setupVAOSized ndraw sizes = do
|
||||
return $
|
||||
VAO
|
||||
{ _vaoName = vaoname
|
||||
, _vaoAttribSizes = sizes
|
||||
, _vaoStride = sum sizes
|
||||
, _vaoVBO = theVBO
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,9 @@ module Shader.Data
|
||||
-- | Lens functions
|
||||
, vaoName
|
||||
, vaoVBO
|
||||
, vaoAttribSizes
|
||||
, vaoStride
|
||||
|
||||
, vboName
|
||||
, vboPtr
|
||||
, vboAttribSizes
|
||||
@@ -45,6 +48,8 @@ data FullShader = FullShader
|
||||
and its buffer targets. -}
|
||||
data VAO = VAO
|
||||
{ _vaoName :: GLuint
|
||||
, _vaoAttribSizes :: [Int] -- ^ It is not clear to me if this is necessary to store or not
|
||||
, _vaoStride :: Int
|
||||
, _vaoVBO :: VBO
|
||||
}
|
||||
{- | Vertex buffer object: contains the reference to the object,
|
||||
|
||||
Reference in New Issue
Block a user