public static void draw(GL2 gl, Geometry g, Camera c, RendererConfiguration q)
    {
        if ( g == null ) {
            VSDK.reportMessage(null, VSDK.WARNING,
                               "JoglGeometryRenderer.draw",
                               "null Geometry reference recieved");
            return;
        }

        if ( g instanceof Sphere ) {
            JoglSphereRenderer.draw(gl, (Sphere)g, c, q);
        }
        if ( g instanceof InfinitePlane ) {
            JoglInfinitePlaneRenderer.draw(gl, (InfinitePlane)g, c, q);
        }
        else if ( g instanceof Box ) {
            JoglBoxRenderer.draw(gl, (Box)g, c, q);
        }
        else if ( g instanceof Cone ) {
            JoglConeRenderer.draw(gl, (Cone)g, c, q);
        }
        else if ( g instanceof Arrow ) {
            JoglArrowRenderer.draw(gl, (Arrow)g, c, q);
        }
        else if ( g instanceof ParametricCurve ) {
            JoglParametricCurveRenderer.draw(gl, (ParametricCurve)g, c, q);
        }
        else if ( g instanceof ParametricBiCubicPatch ) {
            JoglParametricBiCubicPatchRenderer.draw(gl, (ParametricBiCubicPatch)g, c, q);
        }
//        else if ( g instanceof TriangleMesh ) {
//            JoglTriangleMeshRenderer.draw(gl, (TriangleMesh)g, q, false);
//        }
//        else if ( g instanceof QuadMesh ) {
//            JoglQuadMeshRenderer.draw(gl, (QuadMesh)g, q, false);
//       }
//        else if ( g instanceof FunctionalExplicitSurface ) {
//            JoglFunctionalExplicitSurfaceRenderer.draw(gl, (FunctionalExplicitSurface)g, c, q);
//        }
//        else if ( g instanceof TriangleStripMesh ) {
//            JoglTriangleStripMeshRenderer.draw(gl, (TriangleStripMesh)g, q, false);
//        }
//        else if ( g instanceof TriangleMeshGroup ) {
//            JoglTriangleMeshGroupRenderer.draw(gl, (TriangleMeshGroup)g,q);
//        }
        else if ( g instanceof VoxelVolume ) {
            JoglVoxelVolumeRenderer.drawBinaryCubes(gl, (VoxelVolume)g, c, q);
        }
    }