Hi all,

in my scenegraph, I have a MaterialGroup (member variable of my class) above the Node, which contains some geometry. I now want to be able to switch between wireframe rendering and textured rendering of my geometry and in order to do so, I wrote a fuction, which replaces the ChunkMaterial of the MaterialGroup with a new ChunkMaterial. According to a parameter (which is set properly) the needed chunks are added to the new material. Both settings work, as long as I preset the parameter with one of the settings, but switching the parameter doesn't have any impact on the rendered output.

Simple question: why? ;-) And how can I tell opensg, that the material of the MaterialGroup has changed.

Thanks in advance for any hint.

Timo


So here is the function:

void WaterScene::createMaterial(ParameterContainer* par, bool rebuild)
{
ChunkMaterialPtr cmat = ChunkMaterial::create();
                
        // ----------------------
        // --- Texture Image ----
        //-----------------------
        
        //Load the image we want to use as a texture
     ImagePtr image = Image::create();
     image->read("../../../images/texture01.jpg");
        
     TextureChunkPtr tex = TextureChunk::create();
     beginEditCP(tex);
         tex->setImage(image);
         tex->setMinFilter(GL_LINEAR_MIPMAP_LINEAR);
         tex->setMagFilter(GL_LINEAR);
         tex->setWrapS(GL_REPEAT);
         tex->setWrapT(GL_REPEAT);
         tex->setEnvMode(GL_REPLACE);
     endEditCP(tex);
                        
        // if parameter is set, render wireframe
        if (par->getRenderWireframe()){
                
                PolygonChunkPtr polyChunk = PolygonChunk::create();
                beginEditCP(polyChunk,  PolygonChunk::FrontModeFieldMask |
                                                                
PolygonChunk::BackModeFieldMask);
                {
                        polyChunk->setFrontMode(GL_LINE);
                        polyChunk->setBackMode(GL_LINE);
                }
                endEditCP(polyChunk,    PolygonChunk::FrontModeFieldMask |
                                                                
PolygonChunk::BackModeFieldMask);
        
                beginEditCP(cmat);
                {
                        cmat->addChunk(polyChunk);
                }
                endEditCP(cmat);
        }
                
        else{
                beginEditCP(cmat);
                {
                        cmat->addChunk(tex);
                }
                endEditCP(cmat);
        }
        
        
        // core of the cg_node
        if (rebuild == false)
                _cgMatGroup = MaterialGroup::create();
        
        beginEditCP(_cgMatGroup);
        {
                _cgMatGroup->setMaterial(cmat);
        }
        endEditCP(_cgMatGroup);
}


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. http://productguide.itmanagersjournal.com/
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to