查看: 1132|回复: 8

用osg3.2.0编程,发现一个“深度测试”错误?

[复制链接]

该用户从未签到

发表于 2014-7-4 18:34:38 | 显示全部楼层 |阅读模式
问题如图(附件)所示:人脸与后面的头发重叠;汽车本来应该被隐藏的车轮也同时显示了,why?
用osg3.2.0/osg3.2.1rc3测试,均出现上述问题。改用以前的osg3.0.1,则OK,请教各位,是什么原因呀?
感觉是“GL_DEPTH_TEST”被关闭了,困惑呀
求解,谢谢。

问题截图

问题截图

该用户从未签到

发表于 2014-7-7 21:02:40 | 显示全部楼层
caoyishi 发表于 2014-7-6 22:56
谢谢!此为正解,经过测试,可以了!示例代码(vs2008 MFC):
camera->getOrCreateStateSet()->setMo ...

不是改进,是bug。Viewer自带的camera是开启深度测试的。

该用户从未签到

发表于 2014-7-4 18:53:17 | 显示全部楼层
你自己加载的模型文件吧,是不是模型错误

该用户从未签到

发表于 2014-7-4 18:54:04 | 显示全部楼层
ysw 发表于 2014-7-4 18:53
你自己加载的模型文件吧,是不是模型错误

如果你自己纹理贴图的话,估计法线设置有问题

该用户从未签到

 楼主| 发表于 2014-7-4 19:07:41 | 显示全部楼层
ysw 发表于 2014-7-4 18:53
你自己加载的模型文件吧,是不是模型错误

附件中的人体不是自己加载的,是用osgcal加载的。关键是:在osg3.0.1下测试,没有上述错误

该用户从未签到

发表于 2014-7-5 21:50:38 | 显示全部楼层
正解,就是深度测试被关闭了,把camera的深度测试打开就行了。

该用户从未签到

发表于 2014-7-5 23:10:21 | 显示全部楼层
需要自己开启深度测试

该用户从未签到

 楼主| 发表于 2014-7-6 22:56:39 | 显示全部楼层
本帖最后由 caoyishi 于 2014-7-7 12:15 编辑
smash 发表于 2014-7-5 21:50
正解,就是深度测试被关闭了,把camera的深度测试打开就行了。


谢谢!此为正解,经过测试,可以了!示例代码(vs2008 MFC):
camera->getOrCreateStateSet()->setMode(GL_DEPTH_TEST,        osg::StateAttribute::OVERRIDE | osg::StateAttribute::ON);

新的问题:
(1)osg3.2.0等的例子OsgviewerMFC是错误的,没有开启“GL_DEPTH_TEST”。
(2)最新osg3.2.0默认不开启 GL_DEPTH_TEST,这算是一项改进吗?

该用户从未签到

发表于 2014-7-31 10:41:46 | 显示全部楼层
你们都没注意看过我发的帖子以及对osg代码的提交。之前开发者的习惯是新建一个Camera然后赋予Viewer,这样对很多功能的实现不利,现在要求直接获取Viewer::getCamera(),而状态的设置也是在Viewer初始化的时候完成的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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