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:
entirely written in Java (1.5 compatible)
easy customizable (themable) styles via
XML
all basic widgets you could want (Label, Button, Container, Scrollbar, Slider, Window, Checkbox, RadioButton, ...) and more
focus on performance
advanced text rendering using bitmap fonts or AWT fonts (full Unicode support over JOGL TextRenderer)
supports major OpenGL bindings for Java (
JOGL,
LWJGL)
neither comes with nor requires any game middleware but can be easily combined with them (
jME,
jPCT, Xith3D pending,
WorldWind or
Slick)
simple, slim and cohesive design
allows direct OpenGL calls in your
GUI (try that with Swing :P)
used in commercial projects
a lot of examples included
Check out our forum!
-
-
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.
-
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.
Due to limited resources we are focusing at the moment on development rather than on documentation. However, there is something worth reading :)
Our Forum where we happily answer questions and receive bug repoorts.
-
-
-
-
-
-
-
-
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) :)
-
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
We are using two mailing lists. One for development related discussions and one for announcements. Feel free to join!
-
FengGUI-Development: Mailing list on which we discuss development related topics (high traffic)
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.