Hello,
I don't understand what you're doing but if you want to display both Qt widgets 
and osg 3D in the same window, I think you should take a look at osgviewerQt 
example.
Hope it help..:/


gambr wrote:
> Hi all,
> I would like to show a Qt widget in a 3D viewer. I would like to drag it 
> around, scale it and interact with it.
> 
> I looked at the osgQtWidgets example but didn't find exactly what I need. 
> Since I already implemented objects that are osgWidget::Window, I thought to 
> add the geometry got from osg::createTexturedQuadGeometry() to the 
> osgWidget::Window geode. So I created a Texture2D object and set to the 
> osgWidget::Window with setTextureAttributeAndModes(0, texture). I also set an 
> InteractiveImageHandler as cull callback.
> 
> The problem is that I can't see the image.
> 
> For testing I set an image loaded from file to the texture object and it 
> works fine. So what is missing in my code to see the Qt widget image?
> 
> 
> Code:
> 
>    osg::ref_ptr<osgWidget::Window> window = new osgWidget::Canvas;
> 
>    float x = 0.0;
>    float y = 0.0;
>    float width = widget->size().width();
>    float height = widget->size().height();
>    osg::ref_ptr<osg::Texture2D> texture = new osg::Texture2D;
>    osg::ref_ptr<osg::Geometry> quad;
> 
>    //std::string imageFile = "C:/Users/User/Desktop/test.jpg";
>    //osg::ref_ptr<osg::Image> image = osgDB::readImageFile(imageFile);
>    //texture->setImage(image.get());
>    osg::ref_ptr<osgQt::QWidgetImage> widgetImage = new 
> osgQt::QWidgetImage(widget);
>    texture->setImage(widgetImage.get());
> 
>    quad = osg::createTexturedQuadGeometry(osg::Vec3(x, y,0.0f),//center
>                                           osg::Vec3(width,0.0f,0.0f),//width
>                                           osg::Vec3(0.0f,height,0.0) 
> );//height
>    osg::StateSet* stateset = quad->getOrCreateStateSet();
>    stateset->setTextureAttributeAndModes(0, texture.get());
>    stateset->setRenderBinDetails(1, "DepthSortedBin", 
> osg::StateSet::OVERRIDE_RENDERBIN_DETAILS); 
> 
>    osgViewer::InteractiveImageHandler* handler = new 
> osgViewer::InteractiveImageHandler(widgetImage.get());
>    quad->setCullCallback(handler);
> 
>    window->getGeode()->addDrawable(quad);
> 
> 
> 
> 
> Regards,
> Gianni


------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=64006#64006





_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to