Hello,

first, I have a general question. If you want to use shadows in you scene, 
would you use the shadow volumes or the shadow maps?
I use the shadow maps from the osgShadow nodekit. But the normal ShadowMap is 
unaesthetic and when I use the softShadowMap, my application runs very slowly. 
And my idea is a static ShadowMap, which create once at the beginning and save 
this as ImageFile.

Here is my source code, but it doesn't work.

// ShadowTexture erstellt (leer)
    _texture = new osg::Texture2D;
    _texture->setTextureSize(TEXTURE_SIZE_X, TEXTURE_SIZE_Y);
    _texture->setInternalFormat(GL_DEPTH_COMPONENT);
    _texture->setShadowComparison(true);
    _texture->setShadowTextureMode(osg::Texture2D::LUMINANCE);
    _texture->setFilter(osg::Texture2D::MIN_FILTER,osg::Texture2D::LINEAR);
    _texture->setFilter(osg::Texture2D::MAG_FILTER,osg::Texture2D::LINEAR);
                
_texture->setWrap(osg::Texture2D::WRAP_S,osg::Texture2D::CLAMP_TO_BORDER);
    _texture->setWrap(osg::Texture2D::WRAP_T,osg::Texture2D::CLAMP_TO_BORDER);
    _texture->setBorderColor(osg::Vec4(1.0f,1.0f,1.0f,1.0f));
                
      // Kamera für das PreRendering einstellen
     {
        // Kamera erstellen
        osg::ref_ptr<osg::Camera> _camera = new osg::Camera;

                                // Kamera konfigurieren
        _camera->setReferenceFrame(osg::Camera::ABSOLUTE_RF_INHERIT_VIEWPOINT);
        //_camera->setCullCallback(new CameraCullCallback(this));
        _camera->setClearMask(GL_DEPTH_BUFFER_BIT);
        _camera->setClearColor(osg::Vec4(1.0f,1.0f,1.0f,1.0f));
        _camera->setComputeNearFarMode(osg::Camera::DO_NOT_COMPUTE_NEAR_FAR);

        // Viewport in Texturegröße erstellen
        _camera->setViewport(0,0,TEXTURE_SIZE_X,TEXTURE_SIZE_Y);

        // PreRendering einstellen
        _camera->setRenderOrder(osg::Camera::PRE_RENDER);

        // Kamera soll OpenGL Frame Buffer Object nutzen
        
_camera->setRenderTargetImplementation(osg::Camera::FRAME_BUFFER_OBJECT);

        // hänge die Texture als Buffer an die Kamera
        _camera->attach(osg::Camera::DEPTH_BUFFER, _texture.get());
                                
                                _camera->addChild(_scene.get());
                                
                                
osgDB::writeImageFile(*(_texture->getImage()),"test.bmp");
        }


What is my mistake? Or have anyone a idea, whether I can create a static shadow 
with the osgShadow nodekit?

Cheers,

Martin
-- 
Psssst! Schon vom neuen GMX MultiMessenger gehört?
Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to