FengGUI is a graphical USER interface (Gui) application programming interface (Api) based on OpenGl. FengGui provides all typical Gui components like buttons, sliders, trees, text areas, frames, tabs, etc. which are required to build a complete GUI system. Since it is based on OpenGL, FengGUI fits well in multimedia and game environments. In addition, OpenGL enables FengGUI to be fast and have graphical finesse at the same time. The architecture is similar to common GUI APIs which allows developers to start right away. The XML centric design makes it possible to easily customize the appearance of all widgets. Some more not yet mentioned features are summarized in the following list:

Check out our forum!


  • 17-03-09 - Opened a new Facebook Group for FengGUI. Seems everyone has one these days, so we got one too.
  • 15-10-07 - Marc finished working on the new way how themes are applied to widgets. Before today they where statically set up in the constructor of widgets. This made widget creation a bit slow. Marc now decoupled theming and widget creation. Please read on in here.
  • 30-09-07 - We cleaned up our releasing process an little. The most current jars can now be downloaded from sourceforge. Check out http://sourceforge.net/project/showfiles.php?group_id=178317.
  • 21-06-07 - I (Whackjack) have checked in an early version of SVG support. Right now, SVG drawing is done to a BufferedImage and rendered in OpenGL as a texture. This is done using the SVGSalamander library. This technique is rather quick as it’s only drawn once and rendered as a texture subsequently. We decided to take this approach for now to add initial SVG support quickly and easily. Future versions will (hopefully) be done in pure OpenGL. The SVG code is in a separate directory in the source tree, under /ext/. Have a look and let us know what you think in the forums.
  • 13-05-07 - We are extremely happy to announce that Whackjack joined the team to add hardware accelerated SVG rendering support to FengGUI. As far as we know this will make FengGUI the first library that enables to draw SVGs directly in opengl. Cool open source vector drawing programs such as inkscape can then used not only for designing sexy GUIs but also for all sort of displayable content.
  • 10-03-07 - Remember the days when you used to type ‘iddqd’ in your Doom console? Well, now you can do that as well in FengGUI because Johannes added his console code to the trunk today. This does not only enable your users to enter cheats, but also to assign System.out to your console to have real-time logging right in your opengl app (e.g. through log4j). You can also add you custom console commands by implementing a simple interface. The console comes with basic file system navigation commands and a history.
  • 26-02-07 - We enhanced the way how text is rendered. Developers can now chose between the old “direct” rendering method (DirectTextRenderer) and a new “buffered” one (BufferedTextRenderer). While the direct method renders FengGUIs bitmap fonts quad by quad, the buffered method pre-renderes the complete text on a texture and displays the text at once. Obviously, the buffered method is less efficient when you need to update your text very frequently. However in cases where you set the text only once (e.g. in the setup phase) the buffered method offers a smart alternative. You may also want to play around with the new BouncingLettersTextRenderer. To apply a text renderer, simply set it in the appearance class of your label. Improved text renderer support for TextEditor is coming soon after we conducted a few more performance tests.


You can download the latest binaries and sources from the FengGUI project at SourceForge!


Due to limited resources we are focusing at the moment on development rather than on documentation. However, there is something worth reading :)

Future Plans

Although we do not want FengGUI to grow much beyond its current size, we have several ideas which we think would be cool and useful to have in the future. Here is what we have in mind (this does not mean that they will be implemented any time soon).

  • XML serialization of complete GUIs
  • adding a simple effect framework with several nice fx examples
  • writing more/better documentation (urgent) :)
  • simple HTML renderer
  • drag and drop GUI builder
  • TableTreeWidget
  • simple window manager
  • displaying simple animations (basically a sequence of sprites)
  • plotting: charts, diagrams, bar charts, pie charts and so on

There are also features request by users. Please feel free to extend the list below.

  • write more documentation and especially tutorials (preferably with copy-paste code)
  • a Drag and Drop example class
  • A TextEditor that is able to embed images inline (e.g. emote icons in a chat)
  • live re-theming of the UI
  • native generic tooltip handling
  • provide the ability to windows to either snap to each other or snap to the edge of the window
  • provide the ability to change the look and feel of widgets such as buttons and sliders
  • support for openGL ES2.0 for HTML5 canvas - possibly via one of the GWT wrappers such as GWTGL

Mailing Lists

We are using two mailing lists. One for development related discussions and one for announcements. Feel free to join!

  • FengGUI-Announce: Mailing list on which we announce new releases (low traffic).
  • FengGUI-Development: Mailing list on which we discuss development related topics (high traffic)

Bug and Feature-Request Trackers

Although we have trackers on SF, we rather want to use our forum, because this way the public is notified about bugs and their status.


Alternative GUI APIs

Question? Comments?

You can always drop us a line on our development mailing list. If you do not feel like registering for mailing lists then feel free to write a mail to Johannes (johannes.schaback@gmail.com).

irc://chat.freenode.net/fenggui school papers

start.txt · Last modified: 2013/08/30 22:09 by
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki
SourceForge.net Logo