Refactor EBO to use DSA

This commit is contained in:
2023-03-09 12:49:34 +00:00
parent 2fc08a4d96
commit 01268e4c8a
4 changed files with 55 additions and 30 deletions
+33 -18
View File
@@ -73,15 +73,21 @@ preloadRender = do
setupVertexAttribPointer 1 4 8 4
let winColVAO = VAO{_vaoName = winColVAOname, _vaoVBO = winVBO}
-- setup shape geometry/cap VBO and two VAOs
shEBOname <- genObjectName
--shEBOname <- genObjectName
shEBOptr <- mallocArray numDrawableElements
bindBuffer ElementArrayBuffer $= Just shEBOname
bufferData ElementArrayBuffer
$= ( fromIntegral $ glushortSize * numDrawableElements
, nullPtr
, StreamDraw
)
let shEBO = EBO{_ebo = shEBOname, _eboPtr = shEBOptr}
shEBOname <- mglCreateSingle glCreateBuffers
--bindBuffer ElementArrayBuffer $= Just shEBOname
--bufferData ElementArrayBuffer
-- $= ( fromIntegral $ glushortSize * numDrawableElements
-- , nullPtr
-- , StreamDraw
-- )
glNamedBufferData
shEBOname
( fromIntegral $ glushortSize * numDrawableElements)
nullPtr
GL_STREAM_DRAW
let shEBO = EBO{_eboName = shEBOname, _eboPtr = shEBOptr}
shVBOname <- genObjectName
shVBOptr <- mallocArray (7 * numDrawableElements)
bindBuffer ArrayBuffer $= Just shVBOname
@@ -98,14 +104,16 @@ preloadRender = do
bindBuffer ArrayBuffer $= Just shVBOname
setupVertexAttribPointer 0 3 7 0
setupVertexAttribPointer 1 4 7 3
bindBuffer ElementArrayBuffer $= Just shEBOname
--bindBuffer ElementArrayBuffer $= Just shEBOname
glBindBuffer GL_ELEMENT_ARRAY_BUFFER shEBOname
--shPosVAOname <- genObjectName
--bindVertexArrayObject $= Just shPosVAOname
shPosVAOname <- mglCreateSingle glGenVertexArrays
glBindVertexArray shPosVAOname
bindBuffer ArrayBuffer $= Just shVBOname
setupVertexAttribPointer 0 3 7 0
bindBuffer ElementArrayBuffer $= Just shEBOname
--bindBuffer ElementArrayBuffer $= Just shEBOname
glBindBuffer GL_ELEMENT_ARRAY_BUFFER shEBOname
let shPosColVAO = VAO{_vaoName = shPosColVAOname, _vaoVBO = shVBO}
shPosVAO = VAO{_vaoName = shPosVAOname, _vaoVBO = shVBO}
--setup silhouette edge VAO
@@ -116,16 +124,23 @@ preloadRender = do
bindBuffer ArrayBuffer $= Just shVBOname
setupVertexAttribPointer 0 3 7 0
--setup ebo for silhouette edges
silEBOname <- genObjectName
--silEBOname <- genObjectName
silEBOname <- mglCreateSingle glCreateBuffers
silEBOptr <- mallocArray numDrawableElements
-- it may be important to bind this while the correct VAO is bound
bindBuffer ElementArrayBuffer $= Just silEBOname
bufferData ElementArrayBuffer
$= ( fromIntegral $ glushortSize * numDrawableElements
, nullPtr
, StreamDraw
)
let silEBO = EBO{_ebo = silEBOname, _eboPtr = silEBOptr}
glBindBuffer GL_ELEMENT_ARRAY_BUFFER silEBOname --bindBuffer ElementArrayBuffer $= Just silEBOname
--bindBuffer ElementArrayBuffer $= Just silEBOname
glNamedBufferData
silEBOname
( fromIntegral $ glushortSize * numDrawableElements)
nullPtr
GL_STREAM_DRAW
--bufferData ElementArrayBuffer
-- $= ( fromIntegral $ glushortSize * numDrawableElements
-- , nullPtr
-- , StreamDraw
-- )
let silEBO = EBO{_eboName = silEBOname, _eboPtr = silEBOptr}
shEdgeVAO = VAO{_vaoName = shEdgeVAOname, _vaoVBO = shVBO}
-- lighting shaders
lightingWallShadShad <-