查看: 855|回复: 4

这是我做的一个小工程代码,中间有一个神奇的bug,画点必须同时画两个才能显示。。。

[复制链接]

该用户从未签到

发表于 2012-4-12 21:42:02 | 显示全部楼层 |阅读模式
这是我做的一个小工程代码,中间有一个神奇的bug,画点必须同时画两个才能显示。
这个工程的功能是画二维图,目前的功能使用时无bug。
一次点击,选点,第二次确定线。点击现有的线会把线处于被点选状态,线的端点及中点会出现点,此时点击辅助点,可重新设定线的位置。

bug的代码在Line.cpp  198行,如下:
  1. void Line::drawAssistantPoints()
  2. {
  3.         char name[30];
  4.         for( int i=0 ; i<3 ; i++ )
  5.         {
  6.                 sprintf( name , "vertex_%d_%s" , i , _name.c_str());
  7.                 _assistantPoints[i]->addDrawable( drawPoint((*_vertexesArray)[i]));
  8.                 _assistantPoints[i]->addDrawable( drawPoint( (*_vertexesArray)[(i+1)%3] ) );
  9.                 _assistantPoints[i]->setName(name);
  10.                 _group->addChild(_assistantPoints[i]);
  11.         }
  12. }
复制代码
“_vertexesArray”保存辅助点的坐标,必须同时加两个点才会显示,或者再随意添加个可绘制的物体都能让辅助点正常显示。请大神帮帮我,处理了一周,也没搞掉这个bug

code.rar

13.28 KB, 下载次数: 113, 下载积分: 威望 1

实现代码

该用户从未签到

发表于 2012-4-12 22:25:48 | 显示全部楼层
可能是你开启了视锥裁剪,单个点的包围盒大小为零,所以会被丢弃。
为你的这个点手动设置包围盒,或者禁用裁剪。

该用户从未签到

 楼主| 发表于 2012-4-13 08:48:35 | 显示全部楼层
可是如果这个绘制点的代码放到最顶层的group下,单个点也能正常显示

该用户从未签到

发表于 2012-4-13 10:12:49 | 显示全部楼层
这是SMALL_FEATURE_CULLING不是FRUSTUM_CULLING,可以禁用之

该用户从未签到

 楼主| 发表于 2012-4-13 20:44:18 | 显示全部楼层
array 发表于 2012-4-13 10:12
这是SMALL_FEATURE_CULLING不是FRUSTUM_CULLING,可以禁用之

Thank you very very much !
终于解决了这个问题!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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