我要发帖 回复

正式会员

11

主题

65

积分

0

专家分

:

私信
发表时间 : 2007-9-24 15:22:45 | 浏览 : 2829    评论 : 4
好不容易XP下编译成功,发现其实没啥大用处,似乎对OSG1.2不是100%兼容,有使用经验的麻烦指点一下

最近VR访客

Alexsander 评论于2007-9-24 16:01:34
另外顺带问个问题,
工作环境如下:
OSG Ver: 1.2
Platform: WinXP and Debian Linux r4.0
Compiler: VC++ 7.1(Win32) and G++ 4.2.1-6 (Debian)

工作流程
使用Producer::CameraConfig初始化osgProducer::Viewer,然后跳过osgProducer::Viewer直接使用Producer进行多Camera及多窗口管理,使用Design Pattern重新对部分Producer Method封装(因为使用过程中感觉osgProducer::Viewer对多窗口多Camera支持不是很好)

出现问题如下:

Linux平台:
当使用多Camera单一窗口,两次实现时分别使用语句:
viewer.realize(Producer::CameraGroup::ThreadPerCamera);
viewer.realize(Producer::CameraGroup::SingleThreaded);
编译通过,运行通过,退出无误

当使用多Camera多窗口,同样使用上面的实现语句
编译通过,运行通过,直接关闭窗口退出无误。
但使用参数ThreadPerCamera时,使用 Esc键退出出现内存泄漏,而使用单线却无任何问题。

Win32平台:
编译通过,运行通过,退出无误,问题刚好相反,使用使用Esc退出无任何问题,
而使用直接关闭窗口退出出现Microsoft C++ exception: Win32ThreadCanceled @ 0x0f58ff83
FreeSouth 评论于2007-9-24 17:43:40
OSG对Producer::Camera与osg::CameraNode进行了一统~~~~,你试试应该没有这个问题了~~
FreeSouth 评论于2007-9-24 17:44:26
OSGEDIT已经许久没有更新了,对OSG1.20已经是勉勉强强,2.0估计错误百出~~~
Alexsander 评论于2007-9-24 19:15:32
原帖由 FreeSouth 于 2007-9-24 05:43 PM 发表
OSG对Producer::Camera与osg::CameraNode进行了一统~~~~,你试试应该没有这个问题了~~


谢谢解答,曾经试过使用Camera节点,但最后还是放弃该方法,原因是单窗口没问题,但窗口放大的时候会出现图象变形,用Callback获取窗口尺寸重新计算投影和视口矩阵虽然可以解决,但多窗口又出现问题, 解决起来也比较麻烦.
唉,OSG ver1.2归根结底是最后把投影矩阵和视口矩阵的控制权给了Producer, 然后自己还想再控制。
其实个人认为,3D引擎要么你就做回本行,只管渲染像OpenGL,要么就前台后台全提供像OpenSG.
2.0解决的比较好,但用2.0的话代码要重新写,兼容性啊,要命。

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2021-10-26 01:39 AM

返回顶部