Draw shape shadows using index buffer
This commit is contained in:
@@ -96,6 +96,7 @@ preloadRender = do
|
||||
bindVertexArrayObject $= Just shPosVAOname
|
||||
bindBuffer ArrayBuffer $= Just shVBOname
|
||||
setupVertexAttribPointer 0 3 7 0
|
||||
bindBuffer ElementArrayBuffer $= Just shEBOname
|
||||
let shPosColVAO = VAO { _vao = shPosColVAOname, _vaoVBO = shVBO }
|
||||
shPosVAO = VAO { _vao = shPosVAOname, _vaoVBO = shVBO }
|
||||
-- lighting shaders
|
||||
@@ -107,6 +108,16 @@ preloadRender = do
|
||||
lightingLineShadowShad
|
||||
<- makeShader "lighting/lineShadow" [vert,geom,frag] [3] ELinesAdjacency
|
||||
>>= addUniforms ["lightPos"]
|
||||
silEBOname <- genObjectName
|
||||
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}
|
||||
-- 2D draw shaders
|
||||
bslist <- makeShader "dualTwoD/basic" [vert,frag] [3,4] ETriangles
|
||||
bslista <- makeShader "dualTwoD/basic" [vert,frag] [3,4] ETriangles
|
||||
@@ -181,6 +192,7 @@ preloadRender = do
|
||||
{ _pictureShaders = shadV
|
||||
, _shapeShader = bslista {_shadVAO = shPosColVAO }
|
||||
, _shapeEBO = shEBO
|
||||
, _silhouetteEBO = silEBO
|
||||
, _lightingCapShader = lightingCapShad { _shadVAO = shPosVAO }
|
||||
, _lightingLineShadowShader = lightingLineShadowShad
|
||||
, _lightingOccludeShader = wsShad {_shadVAO = wpVAO}
|
||||
|
||||
Reference in New Issue
Block a user