Functional interface for OpenGL 4.1+ and OpenGL ES 2.0+

Latest on Hackage:0.8.3

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

LGPL-3 licensed and maintained by capsjac <capsjac at>

OpenGL ES: Open Graphics API for Embeded Systems


opengles is a Haskell wrapper library around OpenGL, OpenGL ES and EGL. Made complicated OpenGL APIs easy yet keep flexible enough. Resulting binary size is relatively small so that apps launches faster. Works on both desktop and mobile.

Documentation is available through hackage for the current and preceding releases.


  • Garbage collection for GPU objects
  • Pointer operation free
  • Simplified nearly state-free rendering API
  • Compile-time type check of buffers, textures, programs and so on
  • Run on Linux (Mesa), Windows and Android (OS X / iOS contribution is welcome)
  • Vertex Array Object Extension with fallback
  • Multi Draw Extension with fallback


  • Poor documentation and lack of tutorial
  • No legacy APIs
  • No uncommon extensions
  • No support for most of glGet* functionality that harm performance


See examples/ directory.

Contact Information

Contributions and bug reports are welcome!

Please feel free to contact me through github or email.



  • Fix cabal install issue
  • Add and


  • Support GHC 7.10.3
  • Support stack build
  • Fixed examples


  • Support Windows
  • Support EGL 1.4
  • Add geometry shader primitives
  • Add min/max blending
  • Implement multi draw with fallback
  • Many improvements


  • Add framebuffer operations
  • Add shaderPrecision
  • Add Sync
  • Add capability constants
  • Add OpenGL 4.5 Core Profile
  • Rewrite EGL
  • Update examples


  • Add VertexAttributeArray
  • Support render-to-texture
  • Fixed bugs
  • Reduce warnings
  • Add gles-sandbox-player example


  • Add Framebuffer
  • Add PixelFormat


  • Add Texture
  • Add example
comments powered byDisqus