将背景纹理设置为我的osgWidget :: frame

时间:2015-03-16 13:53:38

标签: c++ user-interface openscenegraph

正如标题中所述,我需要对osgWidget :: frame的背景进行纹理化,无论我对它做什么,它都不会改变它的默认白色......

这是我迄今为止所做的尝试:

titleFrame= osgWidget::Frame::createSimpleFrameFromTheme(
    "frame",
    bgTexture,
    5.0f,
    5.0f,
    osgWidget::Frame::FRAME_TEXTURE
    );

titleFrame->getBackground()->setColor( osg::Vec4(1,1,1, 1) );
titleFrame->getBackground()->setTexture( new osg::Texture2D( bgTexture ) );
titleFrame->getBackground()->setTexCoordWrapHorizontal();

我尝试将设置颜色的颜色更改为红色,但无效。 我到目前为止找到的唯一解决方案是用空标签填充它。问题是我需要那个框架才能滚动,我需要不断添加和删除它的项目,所以空标签解决方案并不是很好。

此外,我在尝试更改背景设置之前和之后尝试将框架添加到窗口管理器中,但它也没有工作。

我还应该提一下,这个框架嵌入在osgWidget :: Box中,不知道是否有任何改变。

无论如何,如果有人能解决这个问题,我将不胜感激。

(BTW是否有可能使小部件无法聚焦?)

2 个答案:

答案 0 :(得分:0)

我认为您需要在title->setFlags(osgWidget::Frame::FrameOptions ::FRAME_TEXTURE)之前执行titleFrame->getBackground()->setTexture(image)

否则titleFrame->canTexture()将返回false

//我没有在这里确认解决方案的环境。

答案 1 :(得分:0)

尝试使用titleFrame->getBackground()->setImage(image, true)