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