I thought that the texture must be in RGBA to be used in a shader. The callback was just for debugging, so I didn't think so much about the format. Now I have changed to RGBA format in the callback too. I have also set the viewer to singlethreaded, using this command: viewer.setThreadingModel(osgViewer::Viewer::SingleThreaded); Unfortunately, the texture is still gray.
Åsa -----Ursprungligt meddelande----- Från: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] För J.P. Delport Skickat: den 7 november 2008 08:22 Till: OpenSceneGraph Users Ämne: Re: [osg-users] Render to texture problem Hi, any reason why you have RGBA texture, but RGB in callback? jp Engvall Åsa wrote: > Hi! > > I want to render the scene to a texture and use the texture in a shader. > The texture image is saved to file by a postdraw callback, so I can > look at it. I'm doing something wrong because the texture becomes all gray. > > My scene graph looks like this: > > RTT camera root > | | > \ / > world > > The main viewer looks at the root and the shader program is applied to > the root stateset. Below is a code snippet. > > I would be very grateful if somebody could point out what I'm doing wrong. > Thanks in advance, > > Åsa Engvall > > > // Create a scene texture. > osg::Texture2D* texture = new osg::Texture2D; > texture->setResizeNonPowerOfTwoHint(false); > texture->setTextureSize(traits->width, traits->height); > texture->setInternalFormat(GL_RGBA); > texture->setFilter(osg::Texture2D::MIN_FILTER, > texture->osg::Texture2D::NEAREST); > texture->setFilter(osg::Texture2D::MAG_FILTER, > texture->osg::Texture2D::NEAREST); > osg::Image* textureImage = new osg::Image; > textureImage->allocateImage(traits->width, traits->height, 1, GL_RGBA, > GL_UNSIGNED_BYTE); > texture->setImage(0, textureImage); > > // Add program and uniforms to the root's stateset. > osg::StateSet* state = root->getOrCreateStateSet(); > state->addUniform(numberOfTimeStepsU); > state->addUniform(timeConstantU); > state->addUniform(frameTimeU); > state->addUniform(sceneTextureU); > state->addUniform(prevModelViewMatrixU); > state->addUniform(prevModelViewProjectionMatrixU); > state->setAttributeAndModes(motionBlurProgram, > state->osg::StateAttribute::ON); setTextureAttributeAndModes(0, > state->texture, osg::StateAttribute::ON); > > // Create a camera that renders the scene to a texture. > osg::Camera* RTTcamera = new osg::Camera; > RTTcamera->setReferenceFrame(osg::Transform::ABSOLUTE_RF); > RTTcamera->setClearColor(osg::Vec4(1,1,1,1)); > RTTcamera->setClearMask(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); > RTTcamera->setViewport(0, 0, traits->width, traits->height); > RTTcamera->setComputeNearFarMode(osg::Camera::DO_NOT_COMPUTE_NEAR_FAR) > RTTcamera->; setRenderOrder(osg::Camera::PRE_RENDER); > RTTcamera->setRenderTargetImplementation(osg::Camera::FRAME_BUFFER_OBJ > RTTcamera->ECT); attach(osg::Camera::COLOR_BUFFER, texture); > RTTcamera->addChild(world); attach(osg::Camera::COLOR_BUFFER, > RTTcamera->textureImage); setPostDrawCallback(new > RTTcamera->ScreenShotCallback(traits->width, > traits->height, *textureImage, GL_RGB, GL_UNSIGNED_BYTE)); > > > > ---------------------------------------------------------------------- > -- > > _______________________________________________ > osg-users mailing list > osg-users@lists.openscenegraph.org > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph. > org -- This message is subject to the CSIR's copyright terms and conditions, e-mail legal notice, and implemented Open Document Format (ODF) standard. The full disclaimer details can be found at http://www.csir.co.za/disclaimer.html. This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. MailScanner thanks Transtec Computers for their support. _______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org _______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org