当前位置: 首页>>代码示例>>C++>>正文


C++ ofXml::getNumChildren方法代码示例

本文整理汇总了C++中ofXml::getNumChildren方法的典型用法代码示例。如果您正苦于以下问题:C++ ofXml::getNumChildren方法的具体用法?C++ ofXml::getNumChildren怎么用?C++ ofXml::getNumChildren使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ofXml的用法示例。


在下文中一共展示了ofXml::getNumChildren方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: buildFromXml

void ofxShaderGraph::buildFromXml(ofXml x){
    unordered_set<string> root_names;

    x.reset();
    unsigned long n = x.getNumChildren();

    params.setName(x.getName());

    //first pass, create all nodes and set defaults
    for(unsigned long i=0; i<n; i++){
        x.reset();
        x.setToChild(i);
        if(x.getName()!="node")
            continue;
        string name = x.getAttribute("name");
        if(name==""){
            cout<<"ofxShaderGraph warning: anonymous node in XML"<<endl;
            continue;
        }
        ofxBaseShaderNode *node;
        ofFbo::Settings node_fbo_settings = fbo_settings;
        //check for modifications to fbo_settings
        if(x.setTo("scale")){
            float scale = x.getFloatValue();
            node_fbo_settings.width*=scale;
            node_fbo_settings.height*=scale;
            x.setToParent();
        }
        string format = x.getAttribute("format");
        if(format!=""){
            if(format=="rgba8")
                node_fbo_settings.internalformat = GL_RGBA8;
            else if(format=="rgba16")
                node_fbo_settings.internalformat = GL_RGBA16;
            else if(format=="rgba32f")
                node_fbo_settings.internalformat = GL_RGBA32F;
            else if(format=="rgba16f")
                node_fbo_settings.internalformat = GL_RGBA16F;
            else if(format=="rgb8")
                node_fbo_settings.internalformat = GL_RGB8;
            else if(format=="rgb16")
                node_fbo_settings.internalformat = GL_RGB16;
            else if(format=="rgb32f")
                node_fbo_settings.internalformat = GL_RGB32F;
            else if(format=="rgb16f")
                node_fbo_settings.internalformat = GL_RGB16F;
        }
        //check for node to swap buffers with
        string swap_name = x.getAttribute("swap");
        if(swap_name != ""){
            //don't duplicate pairs
            if(swap.count(swap_name)==0){
                cout<<"ofxShaderGraph: "<<name<<" swaps with "<<swap_name<<endl;
                swap.insert(pair<string, string>(name, swap_name));
            }else{
                cout<<"ofxShaderGraph warning: ignoring duplicate swap of"<<name<<" with "<<swap_name<<endl;
            }
        }
        //check for color to init buffer to
        if(x.setTo("init")){
            float val = x.getFloatValue();
            init.insert(pair<string, float>(name, val));
            x.setToParent();
        }
        //check for shader path
        string shader_name = x.getAttribute("shader");
        if(shader_name == ""){
            //shaderless node
            node = new ofxConstantShaderNode(allocator, node_fbo_settings, name);
        }
        else{
            ofShader *shader = new ofShader();
            stringstream shader_path;
            shader_path<<ofToDataPath("../../src/shader/")<<shader_name;
            shader->load(shader_path.str());
            if(!shader->isLoaded()){
                cout<<"ofxShaderGraph warning: shader "<<shader_name<<" failed to load from path "<<shader_path.str()<<endl;
            }
            else{
                cout<<"ofxShaderGraph: loaded shader "<<shader_name<<endl;
            }
            node = new ofxBaseShaderNode(allocator, node_fbo_settings, name, shader);
        }
        //grab all of the new node's parameters
        params.add(node->getParameterGroup());
        //put it in the map from names to nodes
        nodes.insert(pair<string, ofxBaseShaderNode*>(name, node));
        //everything goes in root_names, to be removed when is appears as an input
        root_names.insert(name);

        cout<<"ofxShaderGraph: inserted node "<<name<<endl;

        //set defaults
        if(x.setTo("defaults") && x.setToChild(0)){
            do{
                string param_type = x.getName();
                string param_name = x.getAttribute("name");
                if(param_type=="float"){
                    float v = x.getFloatValue();
                    node->setParameter(param_name, v);
//.........这里部分代码省略.........
开发者ID:victor-shepardson,项目名称:audiovisual-feedback,代码行数:101,代码来源:ofApp.cpp


注:本文中的ofXml::getNumChildren方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。