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

Set a background texture to my osgWidget::frame

本文关键字:osgWidget 我的 背景 纹理 设置      更新时间:2023-10-16

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

以下是我迄今为止所尝试的:

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中,不知道这是否会改变什么。

不管怎样,如果有人能解决这个问题,我将不胜感激。

(顺便说一句,有可能使小部件不可聚焦吗?)

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

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

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

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