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