Refactor pointers into vaos

This commit is contained in:
2021-02-20 09:26:59 +01:00
parent fa6f2f22f9
commit 2c3d8d5b01
2 changed files with 29 additions and 90 deletions
+12 -14
View File
@@ -254,10 +254,10 @@ renderPicture' pdata zoom (winx,winy) pic = do
(nTriVs,nTextVs,numCircVs,nLineVs,nArcVs)
-- <- F.foldM (theFold (_ptrPosVBO pdata, _ptrColVBO pdata)
<- F.foldM (theFold (twoPtrsVAO $ _triVAO pdata)
(threePtrsVAO $ _textVAO' pdata)
(threePtrsVAO $ _circVAO' pdata)
(_ptrLinePos pdata, _ptrLineCol pdata)
(threePtrsVAO $ _arcVAO' pdata)
(threePtrsVAO $ _textVAO pdata)
(threePtrsVAO $ _circVAO pdata)
(twoPtrsVAO $ _lineVAO pdata)
(threePtrsVAO $ _arcVAO pdata)
) $ picToFTree pic
depthFunc $= Just Less
@@ -268,29 +268,27 @@ renderPicture' pdata zoom (winx,winy) pic = do
drawArrays Triangles (fromIntegral firstIndex) (fromIntegral $ nTriVs)
-- draw lines, don't need to change the program or vaos, just need to bind the
-- vbos and draw
bindArrayBuffers nLineVs
[(_posVBO pdata, _ptrLinePos pdata, 3)
,(_colVBO pdata, _ptrLineCol pdata, 4)
]
bindVertexArrayObject $= Just (_vao $ _lineVAO pdata)
bindArrayBuffers nTriVs $ _vaoBufferTargets $ _lineVAO pdata
drawArrays Lines (fromIntegral firstIndex) (fromIntegral $ nLineVs)
-- draw circles
currentProgram $= Just (_circShader pdata)
uniform (_uniWinSize pdata) $= Vector2 winx winy
uniform (_csZoomUni pdata) $= zoom
bindVertexArrayObject $= Just (_vao $ _circVAO' pdata)
bindArrayBuffers numCircVs $ _vaoBufferTargets $ _circVAO' pdata
bindVertexArrayObject $= Just (_vao $ _circVAO pdata)
bindArrayBuffers numCircVs $ _vaoBufferTargets $ _circVAO pdata
drawArrays Points (fromIntegral firstIndex) (fromIntegral $ numCircVs)
-- draw arcs
currentProgram $= Just (_arcShader pdata)
uniform (_asWinUni pdata) $= Vector2 winx winy
uniform (_asZoomUni pdata) $= zoom
bindVertexArrayObject $= Just (_vao $ _arcVAO' pdata)
bindArrayBuffers nArcVs $ _vaoBufferTargets $ _arcVAO' pdata
bindVertexArrayObject $= Just (_vao $ _arcVAO pdata)
bindArrayBuffers nArcVs $ _vaoBufferTargets $ _arcVAO pdata
drawArrays Points (fromIntegral firstIndex) (fromIntegral $ nArcVs)
-- draw text
currentProgram $= Just (_textShader pdata)
bindVertexArrayObject $= Just (_vao $ _textVAO' pdata)
bindArrayBuffers nTextVs $ _vaoBufferTargets $ _textVAO' pdata
bindVertexArrayObject $= Just (_vao $ _textVAO pdata)
bindArrayBuffers nTextVs $ _vaoBufferTargets $ _textVAO pdata
drawArrays Points (fromIntegral firstIndex) (fromIntegral $ nTextVs)
bufferOffset :: Integral a => a -> Ptr b