Skip to content
Switch branches/tags

Latest commit

* develop: (105 commits)
  Add latest Ponder, 3.1, as submodule.
  Move Ponder to submodule. First delete.
  Fix warning.
  Fix typo in util/CMakeLists.txt
  Add option to support SFML 2.5 on Windows, second attempt
  Fix duplicate definition.
  Fix warnings
  Update Ponder to V3.0.0
  Fix flags.
  Mention Ponder #30, bump version to 1.0.
  Fix null sample.
  Update gitignore
  Add Irrlicht, help.
  Remove brackets from macro with no args.
  git subrepo pull deps/ponder
  Ensure Ponder is statically linked.
  Fix Windows min/max macros. - Why?!!
  Fix MSVC compilation. - Please make sure you have the latest MSVC for bugfixes in C++1y

# Conflicts:
#	cmake/Config.cmake

Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Linux & MacOS status: Build Status Windows: Build status

GWork is a skinnable, embeddable GUI library with an extensive control set. Control rendering is abstracted, and can be implemented by any application wishing to use the library. Gwork (pronounced "gw-orc") is a fork of the GUI library GWEN. It was forked to fix issues with GWEN and add new features.

A number of rendering backends are provided for use, or as an example for your own:

  • Allegro5 (cross-platform).
  • DirectX 11 (Windows 7+).
  • Irrlicht3D (cross-platform).
  • OpenGL2 (cross-platform. Uses GLFW).
  • OpenGL Core Profile (cross-platform. Uses GLM, GLEW, GLFW).
  • SDL2 (cross-platform).
  • SFML2 (cross-platform).
  • Software (cross-platform). Render to texture.

Note that the software renderer can be used on any platform, but, obviously, with the penalty of not having hardware acceleration. For more information see the documentation.



  • See CHANGELOG for changes to Gwork, and the differences from GWEN.


Please report problems to Github or they'll get lost.


Get source code:

  • From git: git clone gwork or
  • Download zip & unzip

CMake is used to generate the project files. See cmake -h to see all the generators for your platform. Only have one renderer per build directory. Choose renderer:


For example to build Allegro 5 renderer using Ninja:

cd gwork
mkdir build && cd build                 # put build files in subdirectory
cmake -GNinja -DRENDER_ALLEGRO5=ON ..   # create Ninja project files

Providing the dependencies are present, this will create a sample executable. When run it will demonstrate all of the controls available:

ninja                       # build project
bin/GworkAllegro5Sample     # run sample