查看: 3227|回复: 12

运行最简单的例子CPU占用率100%

[复制链接]

该用户从未签到

发表于 2010-8-14 16:02:40 | 显示全部楼层 |阅读模式
本帖最后由 wangying0822 于 2010-8-14 16:44 编辑

使用osgViewer,读取cow.osg模型,运行起来后,帧速率为50,不进行任何输入输出,查看CPU的占用率是100%。
计算机配置如下:
Thinkpad T41p
处理器:Mobile Intel Pentium M,1700MHZ
内存:1G
显卡:ATI MOBILITY GL T2/T2e (128M)
OPENGL 支持2.1

可能我的笔记本比较老,但是运行别的公司做的例子时(中视典的变电场景漫游不是居于osg的,是基于VRP的,基于Direct的),当不进行交互时,CPU占用率是0%,而我使用OSG运行同样规模的场景,十分卡,不论是否有交互,CPU占用率一直在100%。
怀疑OSG的性能是不是有问题?是不是不论是否有交互,一直循环渲染,导致CPU资源的浪费?

该用户从未签到

发表于 2010-8-15 13:05:46 | 显示全部楼层
OSG默认启动一个线程后台不断渲染图像,所以单核处理器性能影响比较大

该用户从未签到

发表于 2010-8-16 08:29:31 | 显示全部楼层
这也许是因为您用了不恰当的线程模式,或者程序中有不断更新的内容造成的。在我的所有机器上,简单OSG程序的CPU占用率都是0%(也就是检测不出来)

该用户从未签到

发表于 2011-3-10 15:44:20 | 显示全部楼层
回复 3# array


为什么我的osg程序即时很简单,场景没有任何变化,cpu占有率也有20%左右,我开启了垂直同步——运行时只有vs2008,是不是我的电脑太慢了?双核2.4Ghz

我要做的程序需要尽可能少的占用cpu,而且场景变化就几次,我考虑在后台把这几次都先绘制出来,渲染时直接显示,但是不知道思路。我看了最长的一帧,好像还是没想到怎么实现,还请array指教。

该用户从未签到

发表于 2011-3-11 08:46:38 | 显示全部楼层
口说无凭,您需要用代码来证明您的程序的确什么都没有做。此外您的电脑很好了,跑OSG的简单程序绰绰有余

我考虑在后台把这几次都先绘制出来,渲染时直接显示
我不知道您要表达什么,不过似乎您设想的事情是不可能实现的,实现了对于效率也不会有任何的提升

该用户从未签到

发表于 2011-3-11 09:19:56 | 显示全部楼层
回复 5# array


效率的问题我再研究一下。

我的意思是,我有一个场景,运行时场景的变化只有可以预知的几个,例如,只有某个节点的位置从A到B,再到C,场景里其他的部分都不变。假设不适用漫游,也没有交互事件,我能不能在程序初始化时将可预置的这三幅画面在后台绘制出来,运行时直接显示这三幅画面?


这种思路osg有没有可能实现?

此外,osg的帧率如何通过程序控制?也就是说我需要的时候才去渲染,不需要的时候不进行帧渲染。

该用户从未签到

发表于 2011-3-11 12:37:04 | 显示全部楼层
我能不能在程序初始化时将可预置的这三幅画面在后台绘制出来,运行时直接显示这三幅画面

那您这种就不属于3D开发了,您完全可以用photoshop画几幅画然后循环播放……

该用户从未签到

发表于 2011-3-11 16:01:19 | 显示全部楼层
本帖最后由 qingfeng5211 于 2011-3-11 16:03 编辑

回复 7# array


谢谢。

cpu占有率的问题有了进展,我自认为简单的程序,是因为程序是win32的,单线程运行,我用MFC做的相同场景,在一个单独线程执行frame函数并加入延时,cpu占有率就很低了。



6楼我说的,是这样,如果场景没有任何变化,osg还是会不断的执行更新、剪裁、渲染对吧?我试了一下,即时最小化程序,osg程序占用的cpu也没有变化。有没有办法,让osg在场景没有变化时,不自动渲染,从而在这时不占用cpu,而在场景变化之后,再去渲染?


我现在考虑是通过程序来控制frame的调用,没有更新时,暂停frame的调用;更新后,再回复frame调用。不过还没试验,不知道可不可行。

有没有更好的办法呢?

该用户从未签到

发表于 2011-3-11 17:00:18 | 显示全部楼层
OSG已经提供了按需渲染的功能,即setRunFrameScheme(ON_DEMAND)

该用户从未签到

发表于 2011-3-14 09:26:12 | 显示全部楼层
回复 9# array

哦,谢谢 array。

该用户从未签到

发表于 2011-3-14 14:39:54 | 显示全部楼层
有用的函数,呵呵

该用户从未签到

发表于 2011-3-15 23:36:59 | 显示全部楼层
请教楼主,请教array,我的一个flt模型文件有11M之多,每次用osg渲染时,都要等待很长时间,渲染窗口才出现,请问怎么才能加快渲染,我的机器是双核的。

该用户从未签到

发表于 2011-3-16 08:38:27 | 显示全部楼层
这首先是加载速度的问题,您的文件本身已经不小了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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