Rendering Scenes With Translucent Objects:
A (Nearly) Pure CPU Approach

render Methods in SceneElement subclasses

Within the render methods for your SceneElement subclasses, you can do something like the following:
ExtendedController* ec = dynamic_cast<ExtendedController*>(Controller::getCurrentController());
if (ec->drawingOpaque() && this-object-has-opaque-pieces)
    do-actual-rendering-of-opaque-pieces
else if (!ec->drawingOpaque() && this-object-has-translucent-pieces)
    do-actual-rendering-of-translucent-pieces

Advantages

Disadvantages