Refactor EBO to use DSA
This commit is contained in:
+19
-9
@@ -19,7 +19,7 @@ import Dodge.Render.ShapePicture
|
||||
import Dodge.Render.Walls
|
||||
import Foreign
|
||||
import Geometry
|
||||
import Graphics.GL.Core43
|
||||
import Graphics.GL.Core45
|
||||
import Graphics.Rendering.OpenGL hiding (color, rotate, scale, translate)
|
||||
import MatrixHelper
|
||||
import Render
|
||||
@@ -84,17 +84,27 @@ doDrawing win pdata u = do
|
||||
, (_windowShader pdata, nWins)
|
||||
, (_textureArrayShader pdata, nFls)
|
||||
]
|
||||
bindBuffer ElementArrayBuffer $= pdata ^? shapeEBO . ebo --Just (_ebo $ _shapeEBO pdata)
|
||||
bufferSubData
|
||||
ElementArrayBuffer
|
||||
WriteToBuffer
|
||||
--bindBuffer ElementArrayBuffer $= pdata ^? shapeEBO . eboName --Just (_ebo $ _shapeEBO pdata)
|
||||
--bufferSubData
|
||||
-- ElementArrayBuffer
|
||||
-- WriteToBuffer
|
||||
-- 0
|
||||
-- (fromIntegral $ glushortSize * nIndices)
|
||||
-- (_eboPtr $ _shapeEBO pdata)
|
||||
glNamedBufferSubData
|
||||
(_eboName $ _shapeEBO pdata)
|
||||
0
|
||||
(fromIntegral $ glushortSize * nIndices)
|
||||
(_eboPtr $ _shapeEBO pdata)
|
||||
bindBuffer ElementArrayBuffer $= pdata ^? silhouetteEBO . ebo --Just (_ebo $ _silhouetteEBO pdata)
|
||||
bufferSubData
|
||||
ElementArrayBuffer
|
||||
WriteToBuffer
|
||||
--bindBuffer ElementArrayBuffer $= pdata ^? silhouetteEBO . eboName --Just (_ebo $ _silhouetteEBO pdata)
|
||||
--bufferSubData
|
||||
-- ElementArrayBuffer
|
||||
-- WriteToBuffer
|
||||
-- 0
|
||||
-- (fromIntegral $ glushortSize * nSilIndices)
|
||||
-- (_eboPtr $ _silhouetteEBO pdata)
|
||||
glNamedBufferSubData
|
||||
(_eboName $ _silhouetteEBO pdata)
|
||||
0
|
||||
(fromIntegral $ glushortSize * nSilIndices)
|
||||
(_eboPtr $ _silhouetteEBO pdata)
|
||||
|
||||
@@ -33,7 +33,7 @@ drawCPUShadows pdata s pos rad = do
|
||||
--currentProgram $= theshad ^? shadProg
|
||||
glUseProgram (theshad ^. shadProg')
|
||||
--bindVertexArrayObject $= Just (_vaoName $ _shadVAO' theshad)
|
||||
glBindVertexArray $ (_vaoName $ _shadVAO' theshad)
|
||||
glBindVertexArray . _vaoName $ _shadVAO' theshad
|
||||
glDrawArrays
|
||||
(marshalEPrimitiveMode $ _shadPrim' theshad)
|
||||
0
|
||||
|
||||
+33
-18
@@ -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 <-
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@ module Shader.Data
|
||||
, vboPtr
|
||||
, vboAttribSizes
|
||||
, vboStride
|
||||
, ebo
|
||||
, eboName
|
||||
, eboPtr
|
||||
|
||||
, shadProg'
|
||||
@@ -59,7 +59,7 @@ data VBO = VBO
|
||||
, _vboStride :: Int
|
||||
}
|
||||
data EBO = EBO
|
||||
{ _ebo :: BufferObject
|
||||
{ _eboName :: GLuint
|
||||
, _eboPtr :: Ptr GLushort
|
||||
}
|
||||
{- | Datatype containing the reference to a texture object. -}
|
||||
|
||||
Reference in New Issue
Block a user