Hi Mike, The only problem I could spot in your code is you are using a TextureRectangle which uses pixel coordinates rather than standard OpenGL non dimensionsal texture coordinates, this means you have to set the texture coordinates on your geometry in pixel coordaintes - so effectively (0,0) to (sizeX, sizeY) rather than (0,0) to (1,1), so you'll need to change the texcoords taht you pass into the createTexturedQuadGeometry().
Robert. On 15 May 2013 15:23, Mike Fournigault <[email protected]> wrote: > Hi, > > I have a problem for displaying a textured quad. The view does not display > anything, and result in a blank screen. > The purpose of my application is to display video frames in the textured quad. > I verified several things, as the texture's image updating, the camera view > and projection matrices, the possibility of viewing a simple box instead of > the textured quad, at its position. All of those operations are working, so I > concluded that there is a problem with my textured quad. > > My code looks as follow : > > > Code: > ClientViewer::initialize() > { > // _renderingFrame is an osg::Image attached to the texture > // it is initialized in an other method > > // graphics context initialization > > // camera initialization > > // _viewer initialization > > _texture = new osg::TextureRectangle(); > _texture->setTextureSize(_renderingFrame->s(), _renderingFrame->t()); > _texture->setImage(_renderingFrame); > osg::ref_ptr<osg::Geometry> quad = > osg::createTexturedQuadGeometry(osg::Vec3(), osg::Vec3(_renderingFrame->s(), > 0, 0), osg::Vec3(0, 0, _renderingFrame->t()), 0, 0, 1, 1); > quad->getOrCreateStateSet()->setAttributeAndModes(0, _texture.get(), > osg::StateAttribute::ON); > _videoSupport = new osg::Geode; > _videoSupport->addDrawable(quad.get()); > > osg::ref_ptr<PositionAttitudeTransform> pat = new > osg::PositionAttitudeTransform(); > pat->addChild(_videoSupport); > pat->setPosition(osg::Vec3(0, 0, Z)); > _viewer->setSceneData(pat); > _viewer->realize(); > } > > > > Then the render method looks as follow : > > > Code: > ClientViewer::render() > { > // Initialize the image _videoFrame with the video content > // protect copy with mutexes > ... > memcpy(_renderingFrame->data(), _videoFrame->data(), > _videoFrame->getImageSizeInBytes()); > _renderingFrame->dirty(); > // dump _renderingFrame to verify its content > ... > _viewer->frame(); > > // Go back to the rendering loop of the thread > } > > > > The images dumped from the _renderingFrame are good and follows the video > content. Replacing the textured quad with a simple box, show the box in view. > > I suppose that there is a compatibility problem between _renderingFrame and > _texture. But I cannot find the problem. > My image is coded as a 24 bits RGB image in GL_UNSIGNED_BYTE. > > What can I test to find the problem with the texture ? > > Solved my problem, I made a mistake when specifying the height vector. My > texture quad was seen on its profile and so was invisible :( :( > Thank you! > > Cheers, > Mike > Code: > > > > > ------------------ > Read this topic online here: > http://forum.openscenegraph.org/viewtopic.php?p=53869#53869 > > > > > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

