Example #1
0
/* Traverses the DAG structure and draws the nodes
 */
void
traverse_dag(const SceneNode *node, ppogl::Material *mat)
{
    PP_CHECK_POINTER( node );
    gl::PushMatrix();

    gl::MultMatrix(node->trans);

    if ( node->mat != NULL ) {
        mat = node->mat;
    } 

    if ( node->isSphere == true ) {
        set_material( mat->diffuse, mat->specular, mat->getSpecularExponent() );

	    gl::CallList(get_sphere_display_list(node->sphere.divisions));
    } 

    SceneNode *child = node->child;
    while (child != NULL) {
        traverse_dag( child, mat );
        child = child->next;
    } 

    gl::PopMatrix();
} 
Example #2
0
void draw_scene_graph(const char *node )
{
    scene_node_t *nodePtr;

    if ( get_scene_node( node, &nodePtr ) != TCL_OK ) {
        handle_error( 1, "draw_scene_graph: No such node `%s'", node );
    } 

    traverse_dag( nodePtr, &g_hier_default_material );
    
} 
Example #3
0
void
draw_scene_graph(const std::string& node)
{
    SceneNode *nodePtr;

    if(get_scene_node( node, &nodePtr ) != true){
        PP_ERROR( "draw_scene_graph: No such node: " << node);
    } 

    traverse_dag( nodePtr, &g_hier_default_material );
}