Working element buffer object
This commit is contained in:
+16
-4
@@ -29,7 +29,7 @@ preloadRender = do
|
||||
-- set up uniform buffer object
|
||||
theUBO <- genObjectName
|
||||
bindBuffer UniformBuffer $= Just theUBO
|
||||
bufferData UniformBuffer $= (64, nullPtr, DynamicDraw)
|
||||
bufferData UniformBuffer $= (64, nullPtr, StreamDraw)
|
||||
bindBufferBase IndexedUniformBuffer 0 $= Just theUBO
|
||||
-- setup wall points VBO, VAOs and shaders
|
||||
wpVBOname <- genObjectName
|
||||
@@ -38,7 +38,7 @@ preloadRender = do
|
||||
bufferData ArrayBuffer $=
|
||||
(fromIntegral $ floatSize * numDrawableWalls * 8
|
||||
, nullPtr
|
||||
, DynamicDraw
|
||||
, StreamDraw
|
||||
)
|
||||
let wpVBO = VBO {_vbo = wpVBOname, _vboPtr = wpVBOptr, _vboAttribSizes = [4,4], _vboStride = 8}
|
||||
wpVAOname <- genObjectName
|
||||
@@ -58,7 +58,7 @@ preloadRender = do
|
||||
bufferData ArrayBuffer $=
|
||||
(fromIntegral $ floatSize * numDrawableWalls * 8
|
||||
, nullPtr
|
||||
, DynamicDraw
|
||||
, StreamDraw
|
||||
)
|
||||
let winVBO = VBO {_vbo = winVBOname, _vboPtr = winVBOptr, _vboAttribSizes = [4,4], _vboStride = 8}
|
||||
winColVAOname <- genObjectName
|
||||
@@ -67,13 +67,23 @@ preloadRender = do
|
||||
setupVertexAttribPointer 1 4 8 4
|
||||
let winColVAO = VAO {_vao = winColVAOname, _vaoVBO = winVBO}
|
||||
-- setup shape geometry/cap VBO and two VAOs
|
||||
-- TODO when making shaders that use these VAOs, don't mallocate ptr space
|
||||
shEBOname <- genObjectName
|
||||
shEBOptr <- mallocArray numDrawableElements
|
||||
bindBuffer ElementArrayBuffer $= Just shEBOname
|
||||
bufferData ElementArrayBuffer $=
|
||||
( fromIntegral $ glushortSize * numDrawableElements
|
||||
, nullPtr
|
||||
, StreamDraw
|
||||
)
|
||||
let shEBO = EBO {_ebo = shEBOname, _eboPtr = shEBOptr}
|
||||
shVBOname <- genObjectName
|
||||
shVBOptr <- mallocArray (7 * numDrawableElements)
|
||||
bindBuffer ArrayBuffer $= Just shVBOname
|
||||
bufferData ArrayBuffer $=
|
||||
( fromIntegral $ floatSize * numDrawableElements * 7
|
||||
, nullPtr
|
||||
, DynamicDraw
|
||||
, StreamDraw
|
||||
)
|
||||
let shVBO = VBO {_vbo = shVBOname, _vboPtr = shVBOptr, _vboAttribSizes = [4,4], _vboStride = 8}
|
||||
shPosColVAOname <- genObjectName
|
||||
@@ -81,6 +91,7 @@ preloadRender = do
|
||||
bindBuffer ArrayBuffer $= Just shVBOname
|
||||
setupVertexAttribPointer 0 3 7 0
|
||||
setupVertexAttribPointer 1 4 7 3
|
||||
bindBuffer ElementArrayBuffer $= Just shEBOname
|
||||
shPosVAOname <- genObjectName
|
||||
bindVertexArrayObject $= Just shPosVAOname
|
||||
bindBuffer ArrayBuffer $= Just shVBOname
|
||||
@@ -169,6 +180,7 @@ preloadRender = do
|
||||
return $ RenderData
|
||||
{ _pictureShaders = shadV
|
||||
, _shapeShader = bslista {_shadVAO = shPosColVAO }
|
||||
, _shapeEBO = shEBO
|
||||
, _lightingCapShader = lightingCapShad { _shadVAO = shPosVAO }
|
||||
, _lightingLineShadowShader = lightingLineShadowShad
|
||||
, _lightingOccludeShader = wsShad {_shadVAO = wpVAO}
|
||||
|
||||
Reference in New Issue
Block a user