renderCharacterQuad ::
     Program -> M44 GLfloat -> VBO -> IO () -> [GLfloat] -> IO ()
renderCharacterQuad program pMatrix character charDrawFunc charVerts =
  let (VBO arrayObject arrayBuffers primMode firstIndex numTriangles) =
        character
   in do GL.currentProgram $= Just program
         GL.bindVertexArrayObject $= Just arrayObject
         GL.bindBuffer ArrayBuffer $= listToMaybe arrayBuffers
         charDrawFunc
         sendProjectionMatrix program pMatrix
         sendVertices charVerts
         GL.drawArrays primMode firstIndex numTriangles
         printErrors
renderCharacterQuad ::
     Program -> M44 GLfloat -> VBO -> IO () -> [GLfloat] -> IO ()
renderCharacterQuad program pMatrix character charDrawFunc charVerts =
  let (VBO arrayObject arrayBuffers primMode firstIndex numTriangles) =
        character
   in do GL.currentProgram $= Just program
         GL.bindVertexArrayObject $= Just arrayObject
         GL.bindBuffer ArrayBuffer $= listToMaybe arrayBuffers
         charDrawFunc
         sendProjectionMatrix program pMatrix
         sendVertices charVerts
         GL.drawArrays primMode firstIndex numTriangles
         printErrors
renderCharacterQuad program pMatrix character charDrawFunc charVerts =
  let (VBO arrayObject arrayBuffers primMode firstIndex numTriangles) =
        character
   in do GL.currentProgram $= Just program
         GL.bindVertexArrayObject $= Just arrayObject
         GL.bindBuffer ArrayBuffer $= listToMaybe arrayBuffers
         charDrawFunc
         sendProjectionMatrix program pMatrix
         sendVertices charVerts
         GL.drawArrays primMode firstIndex numTriangles
         printErrors