createCharacterBGQuad :: IO VBO
createCharacterBGQuad =
  let vertexSize = fromIntegral $ sizeOf (0 :: GLfloat)
      posVSize = 2
      numVertices = 6
      firstPosIndex = 0
      vPosition = AttribLocation 0
      numElements = numVertices * posVSize
      size = fromIntegral (numElements * vertexSize)
      stride = 0
      quadConfig = do
        GL.bufferData ArrayBuffer $= (size, nullPtr, DynamicDraw)
        setAttribPointer vPosition posVSize stride firstPosIndex
   in createVBO [quadConfig] Triangles firstPosIndex numVertices
createCharacterBGQuad :: IO VBO
createCharacterBGQuad =
  let vertexSize = fromIntegral $ sizeOf (0 :: GLfloat)
      posVSize = 2
      numVertices = 6
      firstPosIndex = 0
      vPosition = AttribLocation 0
      numElements = numVertices * posVSize
      size = fromIntegral (numElements * vertexSize)
      stride = 0
      quadConfig = do
        GL.bufferData ArrayBuffer $= (size, nullPtr, DynamicDraw)
        setAttribPointer vPosition posVSize stride firstPosIndex
   in createVBO [quadConfig] Triangles firstPosIndex numVertices
createCharacterBGQuad =
  let vertexSize = fromIntegral $ sizeOf (0 :: GLfloat)
      posVSize = 2
      numVertices = 6
      firstPosIndex = 0
      vPosition = AttribLocation 0
      numElements = numVertices * posVSize
      size = fromIntegral (numElements * vertexSize)
      stride = 0
      quadConfig = do
        GL.bufferData ArrayBuffer $= (size, nullPtr, DynamicDraw)
        setAttribPointer vPosition posVSize stride firstPosIndex
   in createVBO [quadConfig] Triangles firstPosIndex numVertices