Ignore:
Timestamp:
Nov 8, 2010, 9:25:18 PM (14 years ago)
Author:
Torben Dannhauer
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • osgVisual/src/distortion/visual_distortion.cpp

    r148 r149  
    4545        xmlDoc* tmpDoc;
    4646        xmlNode* config = util::getModuleXMLConfig( configFileName, "distortion", tmpDoc );
     47       
     48        // extract configuration values
    4749        if(config)
    4850        {
    49                 xmlNode* a_node = config;
    50                 // Extract infos
    51                 std::string name = "";
    52                 bool enabled = false;
    53 
    54                 xmlAttr  *attr = a_node->properties;
    55                 while ( attr )
    56                 {
    57                         std::string attr_name=reinterpret_cast<const char*>(attr->name);
    58                         std::string attr_value=reinterpret_cast<const char*>(attr->children->content);
    59                         if( attr_name == "name" )
    60                                 name = reinterpret_cast<const char*>(attr->children->content);
    61                         if( attr_name == "enabled" && attr_value== "yes" )
    62                                 enabled = true;
    63                         if( attr_name == "enabled" && attr_value== "no" )
    64                                 enabled = false;
    65 
    66                         attr = attr->next;
    67                 }
    68                 OSG_ALWAYS << "Module '" << name << "' found. Enabled = " << enabled << std::endl;
    69         }
    70 
    71         // extract configuration values
     51       
     52                xmlNode* a_node = config->children;
     53
     54                for (xmlNode *cur_node = a_node; cur_node; cur_node = cur_node->next)
     55                {
     56                        std::string node_name=reinterpret_cast<const char*>(cur_node->name);
     57                        OSG_ALWAYS << "----visual_distortion::processXMLConfiguration() - node type="<< cur_node->type <<", name=" << cur_node->name << std::endl;
     58
     59                        // Check for distortion node
     60                        if(cur_node->type == XML_ELEMENT_NODE && node_name == "distortion")
     61                        {
     62                                xmlAttr  *attr = cur_node->properties;
     63                                while ( attr )
     64                                {
     65                                        std::string attr_name=reinterpret_cast<const char*>(attr->name);
     66                                        std::string attr_value=reinterpret_cast<const char*>(attr->children->content);
     67                                        if( attr_name == "channelname" )
     68                                                channelname = attr_value;
     69                                        if( attr_name == "renderimplemmentation" )
     70                                        {
     71                                                if(attr_value=="fbo")
     72                                                        renderImplementation = osg::Camera::FRAME_BUFFER_OBJECT;
     73                                                if(attr_value=="pbuffer")
     74                                                        renderImplementation = osg::Camera::PIXEL_BUFFER;
     75                                                if(attr_value=="pbuffer-rtt")
     76                                                        renderImplementation = osg::Camera::PIXEL_BUFFER_RTT;
     77                                                if(attr_value=="fb")
     78                                                        renderImplementation = osg::Camera::FRAME_BUFFER;
     79                                                if(attr_value=="window")
     80                                                        renderImplementation = osg::Camera::SEPERATE_WINDOW;           
     81                                        }
     82                                        if( attr_name == "width" )
     83                                        {
     84                                                std::stringstream sstr(attr_value);
     85                                                sstr >> tex_width;
     86                                        }
     87                                        if( attr_name == "height" )
     88                                        {
     89                                                std::stringstream sstr(attr_value);
     90                                                sstr >> tex_height;
     91                                        }
     92                                        if( attr_name == "useshader" )
     93                                                useShaderDistortion = (attr_value == "yes") ? true : false;
     94                                        if( attr_name == "hdr" )
     95                                                useHDR = (attr_value == "yes") ? true : false;
     96                                        if( attr_name == "usetexturerectangle" )
     97                                                useTextureRectangle = (attr_value == "yes") ? true : false;
     98
     99
     100                                        attr = attr->next;
     101                                }       // WHILE attrib END
     102                        }       // IF Node == distortion END
     103
     104                        // Check for distortionmap node
     105                        if(cur_node->type == XML_ELEMENT_NODE && node_name == "distortionmap")
     106                        {
     107
     108                        }
     109
     110                        // Check for distortionmap node
     111                        if(cur_node->type == XML_ELEMENT_NODE && node_name == "blendmap")
     112                        {
     113
     114                        }
     115                }       // FOR all nodes END
     116
     117
     118        }       // IF Config valid END
     119        else
     120                OSG_WARN << "ERROR: visual_distortion::processXMLConfiguration() - Invalid module configuration!" << std::endl;
     121
     122
    72123
    73124        // clean up
     
    85136        // Distortion files.
    86137        arguments.getApplicationUsage()->addCommandLineOption("-C <channelname>","Setup the channel name, this is the preset for blendmap, distortionmap and camera configuration file.");
    87     arguments.getApplicationUsage()->addCommandLineOption("--distortionmap","Set a distortion map file name.");
     138
     139        arguments.getApplicationUsage()->addCommandLineOption("--distortionmap","Set a distortion map file name.");
    88140    arguments.getApplicationUsage()->addCommandLineOption("--blendmap","Set a blend map file name.");
    89 
    90         // Render implementation.
    91         arguments.getApplicationUsage()->addCommandLineOption("--shaderDistortion","Use OpenGL shader for distortion and blending.");
    92         arguments.getApplicationUsage()->addCommandLineOption("--fbo","Use Frame Buffer Object for render to texture, where supported.");
    93     arguments.getApplicationUsage()->addCommandLineOption("--fb","Use FrameBuffer for render to texture.");
    94     arguments.getApplicationUsage()->addCommandLineOption("--pbuffer","Use Pixel Buffer for render to texture, where supported.");
    95     arguments.getApplicationUsage()->addCommandLineOption("--window","Use a seperate Window for render to texture.");
    96 
    97         // Texture
    98     arguments.getApplicationUsage()->addCommandLineOption("--width","Set the width of the render to texture.");         // used for all render implementations
    99     arguments.getApplicationUsage()->addCommandLineOption("--height","Set the height of the render to texture.");       // used for all render implementations
    100 
    101         // Texture Rectangle?
    102     arguments.getApplicationUsage()->addCommandLineOption("--texture-rectangle","Use osg::TextureRectangle for doing the render to texure to.");
    103 
    104         // HDR?
    105     arguments.getApplicationUsage()->addCommandLineOption("--hdr","Render distortion as HDR.");
    106 
    107         // Read out Distortion CMDLine arguments
    108         //while (arguments.read("--width", tex_width)) {}
    109     //while (arguments.read("--height", tex_height)) {}
    110 
    111         //while (arguments.read("--fbo")) { renderImplementation = osg::Camera::FRAME_BUFFER_OBJECT; }
    112         //while (arguments.read("--pbuffer")) { renderImplementation = osg::Camera::PIXEL_BUFFER; }
    113         //while (arguments.read("--pbuffer-rtt")) { renderImplementation = osg::Camera::PIXEL_BUFFER_RTT; }
    114         //while (arguments.read("--fb")) { renderImplementation = osg::Camera::FRAME_BUFFER; }
    115         //while (arguments.read("--window")) { renderImplementation = osg::Camera::SEPERATE_WINDOW; }
    116 
    117     //while (arguments.read("--texture-rectangle")) { useTextureRectangle = true; }
    118 
    119     //while (arguments.read("--shaderDistortion")) { useShaderDistortion = true; }
    120 
    121     //while (arguments.read("--hdr")) { useHDR = true; }
    122141
    123142        //while (arguments.read("--distortionmap", distortMapFileName)) { }
     
    170189        blendMapFileName = "..\\resources\\distortion\\blend_distDisabled.bmp";
    171190
    172 
    173 
     191        // Process XML configuration
     192        processXMLConfiguration();
    174193
    175194        // Process Commandline arguments:
Note: See TracChangeset for help on using the changeset viewer.