There are two ways for custom drawing:
This is very easy:
paintWidget(UGraphics * g) { // UFO drawing if desired, e.g. g->drawString g->end(); // your drawing here g->begin(this); // UFO drawing if desired }
Otherwise you could also push all attributes and matrix and restore them after you have completed your drawing.
Most of the time this means that you have already created your OpenGL context and you want to use "inline UFO" (see Integrating UFO in existing applications).
Example 5.1. How to do custom OpenGL drawing
// you may make the root pane transparent so that UFO does not overwrite // your own drawing // context.getRootPane()->setOpaque(false); // main event loop bool done = false; while (!done) { // pumps events from the system event queue display.pumpEvents(); // dispatchEvents returns true when a quit event was processed. done = display.dispatchEvents(); if (!done) { // draw your own stuff draw(); // mark the whole UFO context to be repainted frame->getRootPane()->repaint(); // repaint the frame frame->repaint(); // give other processes a chance tk.sleep(1); } }
A full example is given in test/sdl.cpp
and
test/glut.cpp