Cleanup render preload somewhat
This commit is contained in:
+16
-34
@@ -46,41 +46,27 @@ preloadRender = do
|
||||
|
||||
-- setup shape geometry/cap VBO and two VAOs
|
||||
shVBO <- setupVBO nShapeVerxComp
|
||||
shPosVAOname <- mglCreate glCreateVertexArrays
|
||||
glBindVertexArray shPosVAOname
|
||||
glVertexArrayVertexBuffer shPosVAOname 0 (shVBO ^. vboName) 0 (fromIntegral $ floatSize * nShapeVerxComp)
|
||||
setupVertexAttribPointer shPosVAOname 0 4 0
|
||||
let shPosVAO = VAO{_vaoName = shPosVAOname}
|
||||
shPosVAO <- setupVAOUsingVBO [4] shVBO
|
||||
shEBO <- setupEBO shPosVAO
|
||||
-- note the shape shader vao is distinct from the position vao, but they
|
||||
-- share an EBO
|
||||
shapeshader <- makeShaderUsingVBO "shape/basic" [vert, frag] shapeVerxSizes pmTriangles shVBO
|
||||
glVertexArrayElementBuffer (shapeshader ^. shaderVAO . vaoName) (shEBO ^. eboName)
|
||||
|
||||
--setup silhouette edge VAO
|
||||
shEBO' <- setupEBO shPosVAO
|
||||
shEdgeVAOname <- mglCreate glCreateVertexArrays
|
||||
glBindVertexArray shEdgeVAOname
|
||||
glVertexArrayVertexBuffer shEdgeVAOname 0 (shVBO ^. vboName) 0 (fromIntegral $ floatSize * nShapeVerxComp)
|
||||
setupVertexAttribPointer shEdgeVAOname 0 4 0
|
||||
--setup ebo for silhouette edges
|
||||
silEBOname <- mglCreate glCreateBuffers
|
||||
silEBOptr <- mallocArray numDrawableElements
|
||||
glVertexArrayElementBuffer shEdgeVAOname silEBOname
|
||||
glNamedBufferData
|
||||
silEBOname
|
||||
( fromIntegral $ glushortSize * numDrawableElements)
|
||||
nullPtr
|
||||
GL_STREAM_DRAW
|
||||
let silEBO = EBO{_eboName = silEBOname, _eboPtr = silEBOptr}
|
||||
shEdgeVAO = VAO{_vaoName = shEdgeVAOname}
|
||||
shedgevao <- setupVAOUsingVBO [4] shVBO
|
||||
shedgeebo <- setupEBO shedgevao
|
||||
|
||||
let wallverxstrd = 8
|
||||
wallvbo <- setupVBO wallverxstrd
|
||||
lightingWallShadShad <-
|
||||
makeShaderUsingVBO "lighting/wallShadow" [vert, geom, frag] [4] pmPoints wallvbo
|
||||
|
||||
makeShaderUsingVBO "lighting/wallShadow" [vert, geom] [4] pmPoints wallvbo
|
||||
lightingCapShad <-
|
||||
makeShaderUsingVAO "lighting/cap" [vert, geom] pmTriangles shPosVAO
|
||||
lightingLineShadowShad <-
|
||||
makeShaderUsingVAO "lighting/lineShadow" [vert, geom] pmLinesAdjacency shEdgeVAO
|
||||
|
||||
makeShaderUsingVAO "lighting/lineShadow" [vert, geom] pmLinesAdjacency shedgevao
|
||||
shadowedgeshader <-
|
||||
makeShaderUsingVAO "shadow/edge" [vert, geom] pmLinesAdjacency shEdgeVAO
|
||||
makeShaderUsingVAO "shadow/edge" [vert, geom] pmLinesAdjacency shedgevao
|
||||
shadowcapshader <-
|
||||
makeShaderUsingVAO "shadow/cap" [vert, geom] pmTriangles shPosVAO
|
||||
shadowwallshader <-
|
||||
@@ -93,9 +79,6 @@ preloadRender = do
|
||||
|
||||
-- 2D draw shaders
|
||||
bslist <- makeShaderVBO "dualTwoD/basic" [vert, frag] [3, 4] pmTriangles
|
||||
bslista <- makeShaderUsingVBO "shape/basic" [vert, frag] shapeVerxSizes pmTriangles shVBO
|
||||
glVertexArrayElementBuffer (bslista ^. shaderVAO . vaoName) (shEBO' ^. eboName)
|
||||
--glVertexArrayElementBuffer (bslista ^. shaderVAO . vaoName) shEBOname
|
||||
aslist <- makeShaderVBO "dualTwoD/arc" [vert, frag] [3, 4, 3] pmTriangles
|
||||
eslist <- makeShaderVBO "dualTwoD/ellipse" [vert, geom, frag] [3, 4] pmTriangles
|
||||
cslist <-
|
||||
@@ -131,8 +114,7 @@ preloadRender = do
|
||||
let cloudverxsizes = [4,4,4,4]
|
||||
cloudvbo <- setupVBO (sum cloudverxsizes)
|
||||
(cloudshader, cloudebo)
|
||||
<- makeShaderEBO "cloud/basic" [vert, frag] cloudverxsizes (sum cloudverxsizes)
|
||||
pmTriangles cloudvbo
|
||||
<- makeShaderEBO "cloud/basic" [vert, frag] cloudverxsizes pmTriangles cloudvbo
|
||||
framebuf2 <- setupTextureFramebuffer 800 600
|
||||
framebuf3 <- setupTextureFramebuffer 800 600
|
||||
|
||||
@@ -171,9 +153,9 @@ preloadRender = do
|
||||
return $
|
||||
RenderData
|
||||
{ _pictureShaders = shadV
|
||||
, _shapeShader = bslista -- & shaderVAO' .~ shPosColVAO
|
||||
, _shapeEBO = shEBO'
|
||||
, _silhouetteEBO = silEBO
|
||||
, _shapeShader = shapeshader -- & shaderVAO' .~ shPosColVAO
|
||||
, _shapeEBO = shEBO
|
||||
, _silhouetteEBO = shedgeebo
|
||||
, _lightingCapShader = lightingCapShad
|
||||
, _lightingLineShadowShader = lightingLineShadowShad
|
||||
, _lightingWallShadShader = lightingWallShadShad
|
||||
|
||||
Reference in New Issue
Block a user