查看: 2422|回复: 13

请教一些OSG效率的问题,请多指导?

[复制链接]

该用户从未签到

发表于 2010-11-22 16:56:23 | 显示全部楼层 |阅读模式
1、这样设置背面裁剪是否合适,有没有更好的办法,请高手指教

osg::ref_ptr geom = new osg::Geometry();

... ...

osg::ref_ptr cullface = new osg::CullFace();
cullface->setMode(osg::CullFace::BACK);
geom->getOrCreateStateSet()->setAttributeAndModes(cullface.get(),osg::StateAttribute::ON);

... ...

2、这样设置主循环是否合适,有没有更好的办法,请高手指教
osgViewer::CompositeViewer* viewer = osg->getViewer();
while(!viewer->done())
{
viewer->frame();
Sleep(10); // 用于处理鼠标、事件
}

3、StateSet共享对渲染提高大吗?请高手指教

该用户从未签到

发表于 2010-11-23 08:25:36 | 显示全部楼层
1、这样就可以了,渲染状态是可以被继承的,因此设置给根节点的CullFace会作用于所有的子节点和可绘制对象

2、“Sleep(10); // 用于处理鼠标、事件”,这个注释很让人疑惑,您在这里都做了什么?

3、节点、纹理、StateSet的共享,有的时候对场景渲染效率的提升是巨大的。

该用户从未签到

 楼主| 发表于 2010-11-23 08:45:13 | 显示全部楼层
谢谢array指导

sleep(10)原来是用鼠标移屏时感觉比较钝,就加了这个,让渲染线程停下,处理鼠标相关的事件
也可能是程序的问题,随后再研究研究

该用户从未签到

发表于 2010-11-23 09:44:03 | 显示全部楼层
如果你不需要非常高的fps的话,也许你可以试试vsync?

该用户从未签到

发表于 2010-11-23 13:08:00 | 显示全部楼层
楼上的vsync是什么啊

该用户从未签到

发表于 2010-11-23 13:52:16 | 显示全部楼层
oh,vsync 可以让你的fps不会超过屏幕的刷新率.可以再现卡里设置强制执行,或是osg 里
set traits->vsnc=true;

该用户从未签到

发表于 2010-11-23 15:00:54 | 显示全部楼层
嗯~~~不错,mark,挺实用

该用户从未签到

 楼主| 发表于 2010-11-23 17:55:22 | 显示全部楼层
aya_daxiang 你好
如果你不需要非常高的fps的话,也许你可以试试vsync?

这个fps指的是多少,我希望能达到15帧以上吧

该用户从未签到

发表于 2010-11-23 18:08:03 | 显示全部楼层
哦,是这样的,我的理解就是如果用了vsync之后,fps最高也只能是你屏幕的刷新率,就是说如果你设置了60hz的刷新率,那fps最高也只能是60。这样应该CPU占用率就会降下来。

该用户从未签到

 楼主| 发表于 2010-11-23 19:11:00 | 显示全部楼层
谢谢指导,我试试

该用户从未签到

发表于 2010-11-23 22:54:40 | 显示全部楼层
这个方法对于ATI的显卡应该很实用的,MARK一下!

该用户从未签到

发表于 2010-11-24 08:36:08 | 显示全部楼层
注意Windows下OSG暂时是是把vsync的实现屏蔽起来的,您可以通过显卡控制面板进行垂直同步的设置

该用户从未签到

发表于 2010-11-24 11:29:26 | 显示全部楼层
奥?这功能是屏蔽的啊,呵呵,还好我的显卡已经设置了

该用户从未签到

发表于 2010-11-24 11:29:31 | 显示全部楼层
奥?这功能是屏蔽的啊,呵呵,还好我的显卡已经设置了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表