同事由于新加了一个屏幕,本来用

osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer();
viewer->setSceneData(groupRoot.get());
return viewer->run(); 

就直接可以跑全屏的程序了,然是现在会在两块屏出现全屏,他很苦恼。

于是他:

osgViewer::View* createView(int screenNum)
{
unsigned int width = 1920, height = 1080;
osg::GraphicsContext::WindowingSystemInterface* wsi = osg::GraphicsContext::getWindowingSystemInterface();
if (wsi)
{
wsi->getScreenResolution(osg::GraphicsContext::ScreenIdentifier(screenNum),width,height);
}osg::ref_ptr<osg::GraphicsContext::Traits> traits = new osg::GraphicsContext::Traits;
traits->screenNum = screenNum;
traits->x = 0;
traits->y = 0;
traits->width = width;
traits->height = height;
traits->windowDecoration = false;
traits->doubleBuffer = true;
traits->sharedContext = 0;
osg::ref_ptr<osg::GraphicsContext> gc = osg::GraphicsContext::createGraphicsContext(traits.get());
if (!gc) return NULL;osg::ref_ptr<osg::Camera> camera = new osg::Camera;
camera->setGraphicsContext(gc.get());
camera->setViewport(new osg::Viewport(0,0,width,height));
camera->setProjectionMatrixAsPerspective(30.0f, static_cast<double>(width) / static_cast<double>(height), 1.0f, 10000.0f);GLenum buffer = traits->doubleBuffer ? GL_BACK : GL_FRONT;
camera->setDrawBuffer(buffer);
camera->setReadBuffer(buffer);osg::ref_ptr<osgViewer::View> view = new osgViewer::View;
view->setCamera(camera.get());
view->setCameraManipulator(new osgGA::TrackballManipulator);
return view.release();
}

调用时:

osg::ref_ptr<osgViewer::CompositeViewer> viewer = new osgViewer::CompositeViewer();osgViewer::View* view = createView(0);if (view){view->setSceneData(groupRoot.get());viewer->addView(view);}return viewer->run();

但是遇到问题

他加载了一个使用透明图片的billboard

在之前的代码中显示是透明的,

在用了自己的createView()函数之后,就不透明的。

百思不得其解啊

我看看了,觉得是透明的问题。

给他的

osg::ref_ptr<osg::StateSet> pStateSet = new osg::StateSet();
// 启用混合pStateSet->setMode(GL_BLEND,osg::StateAttribute::ON);····
//主要是下面这句
pStateSet->setRenderingHint(osg::StateSet::TRANSPARENT_BIN);pGeometry->setStateSet(pStateSet.get());

设置了TRANSPARENT_BIN就透明了的。

透明的问题解决了。。。

那么新问题来了:

1.为什么用viewer自带的就不需要设置?

2.透明测试和深度测试会有问题(老问题)

那这些以后解决吧

当天又解决了:

// 状态属性对象osg::ref_ptr<osg::StateSet> pStateSet = new osg::StateSet();// 创建一个2D属性对象osg::ref_ptr<osg::Texture2D> pTexture2D = new osg::Texture2D();// 关联Image对象pTexture2D->setImage(image.get());// 关联Texture2D纹理对象pStateSet->setTextureAttributeAndModes(0, pTexture2D,osg::StateAttribute::ON);// 启用混合pStateSet->setMode(GL_BLEND,osg::StateAttribute::ON);// 关闭光照pStateSet->setMode(GL_LIGHTING,osg::StateAttribute::OFF);····················osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer();viewer->setSceneData(groupRoot.get());
//其实下面这句话就可以解决我同事多屏幕的问题viewer->setUpViewOnSingleScreen();return viewer->run();

转载于:https://www.cnblogs.com/lyggqm/p/6293235.html

[osg][原创]osg多屏幕显示,会出现透明需要设置的问题相关推荐

  1. QT学习笔记(十二):透明窗体设置

    QT学习笔记(十二):透明窗体设置 创建 My_Widget 类 基类为QWidget , My_Widget.cpp 源文件中添加代码 #include "widget.h" # ...

  2. linux6.0设置共享文件夹,[原创] how to virtualbox sharefolder共享文件夹(数据空间)设置全记录...

    [原创] how to virtualbox sharefolder共享文件夹(数据空间)设置全记录 (ubuntu) 1. 在硬件设置中,点击光驱,选择镜像文件,在virtualbox根目录下的VB ...

  3. android 组件透明,万能小组件透明小组件-万能小组件透明背景设置v1.0.0 安卓版_永辉资源网...

    万能小组件透明背景设置全新为广大用户带来的精美小组件模板应用服务平台,有海量的小组件,快捷方式小组件以及照片小组件,让你的桌面更加简单美观,感兴趣的朋友快来下载体验吧! 万能小组件透明小组件软件介绍: ...

  4. html+页面的背景透明,css设置背景透明 元素不透明

    css设置背景透明 元素不透明 在做前端页面的时候,我们会遇到这样的情况,需要背景为半透明状态,但是层里面的内容不需要为透明的状态.有时候我们设置的时候会出现不管内容还是背景同时都成透明了,如何实现背 ...

  5. HTML5+CSS3之透明效果设置

    介绍三种设置元素透明效果的方法: 1.设置opacity属性 2.设置rgba属性值 3.设置transparent为属性值(设置元素全透明) 代码及效果展示如下: <!DOCTYPE html ...

  6. [osg]源码分析:osg::Vec3, osg::Vec3f

    本文来探究下OSG中的各种数组! 一.根据我平日用的较多的,(比如设置顶点数组,法线数组),先看osg::Vec3. osg::Vec3定义在<osg/Vec3>头文件中,只有一句: na ...

  7. OSG中OSG和IVE文件的关系

    为了加快模型导入和显示的速度,每个视景驱动软件都有自己的二进制格式,比如Vega的FST,Vega Prime的VSB,Performer的PFB 等.       OSG里面的就是IVE,所以在我们 ...

  8. osg之osg环境配置

    一.相关文件下载 1.osg源码 2.osg第三方库 3.osg官方实例包 4.CMake 二.编译环境创建 为了编译的顺利进行,将下载的文件组织如下,在E盘建立一个OSG的文件夹,然后其他文件如下放 ...

  9. 【OSG】OSG软件模块结构

    如下图,初学随手画的,仅供参考:

  10. SurfaceView类透明背景设置

    将SurfaceView背景设置为透明,主要添加以下几句话就可以了: 在SurfaceView创建后设置一下下面的参数: setZOrderOnTop(true); getHolder().setFo ...

最新文章

  1. matlab数据接口技术,实战MATLAB之文件与数据接口技术
  2. VTK:PolyData之CellEdgeNeighbors
  3. catkin_make与gtest出现冲突的问题与解决
  4. linux 正则表达式和通配符
  5. 开源+技术影响力,联创共建云端技术生态|TeaTalk·Online演讲实录
  6. matlab-罗曼诺夫斯基准则剔除粗大值
  7. 为什么RegisterClientScriptResource方法在自定义控件中的RenderContents期间不起作用?...
  8. RPG多人回合制游戏战斗框架设计《一:基本战斗流程》
  9. 广东省专科学校列表(附官网地址)
  10. Unity Visual Effect Graph 制作Fireworks烟花特效
  11. C++定义一个复数类Complex,使得下面的代码能够工作。(注:下列代码需放在主函数中。)
  12. 2019年字节跳动2020届秋招在线笔试真题(后端开发工程师)
  13. html如何查看字体样式,css2.0文档查阅及字体样式
  14. 《HelloGitHub》第 65 期
  15. UE5中置人利用iphone驱动虚拟人面部
  16. 操作系统-进程映像、虚拟内存
  17. MIGO/CO11N 批次创建增强 自定义批次号创建规则
  18. Pandas 统计分析基础 笔记2 任务4.2 掌握DataFrame的常用操作
  19. 新型多功能、高性能量子点,可以用于医学成像、量子计算
  20. Pyqt5 在表格中单元格设置下拉框,并根据选项改变背景颜色

热门文章

  1. 聊聊jQuery is not defined
  2. Mac Pro 安装 Sublime Text 3,个性化设置,主题 和 插件 收藏
  3. iPhone Objective-C EXC_BAD_ACCESS问题
  4. Eset易视Smart灵巧护卫Security
  5. ASP.NET【1】
  6. 轻松搭建Redis缓存高可用集群
  7. 【Java基本功】一文读懂final关键字的用法 1
  8. DirectX11 With Windows SDK--03 索引缓冲区、常量缓冲区
  9. VB求最大公约数的两个例子
  10. Windows Phone 8初学者开发—第18部分:在页面间导航