查看: 1651|回复: 3

有关中文支持的问题

[复制链接]

该用户从未签到

发表于 2009-12-12 17:57:55 | 显示全部楼层 |阅读模式
本帖最后由 hjcun2009 于 2009-12-12 18:01 编辑

请教一下,我用的OSG版本是OSG2.8.2,开发环境是VS2005,我在一个场景中添加了osgText::text,并调用了setText(L"中文显示"),AlignmentType为CENTER_BASE_LINE,AxisAlignment为SCREEN,在场景中显示很正常,然后我把这个场景保存为IVE,然后再打开这个IVE时,发现刚才我添加的osgText::text在场景中的显示不太正常,表现为:"中文显示"这个字符串似乎在头和尾多了很多空格,而且从显示效果上来看,AlignmentType似乎变成了LEFT_BASE_LINE,但是我查看这个osgText::text的属性时,发现AlignmentType仍然是CENTER_BASE_LINE,但是AxisAlignment却莫名其妙的变成了XY_PLANE,但是从显示上来看,AxisAlignment还是SCREEN,因为无论我怎么变换视角,TEXT总是面向摄像机的,我猜测可能是中文字符串在保存或者打开时由于OSG不支持中文的原因出现这些莫名其妙的现象,请问哪位高手能告诉我应该如何解决这个问题吗?

该用户从未签到

发表于 2009-12-13 03:40:46 | 显示全部楼层
这个问题源于OSG的插件文件里面没有添加中文处理,,手动修改一下插件,,添加中文处理就可以了~~~~~~~~~

该用户从未签到

 楼主| 发表于 2009-12-13 15:33:40 | 显示全部楼层
谢谢Flysky,我查看了osgdb_ive.dll的源代码,发现text.cpp的第126行osg::ref_ptr<osg::UIntArray> strarr = new osg::UIntArray(textstring.size());代码里先是NEW了一个textstring.size()长度的osg::UInitArray,然后再往里面push_back,导致textstring的长度变成了原来的2倍,我把这句改成osg::ref_ptr<osg::UIntArray> strarr = new osg::UIntArray就好了,貌似这是个程序BUG?

该用户从未签到

发表于 2009-12-13 23:11:41 | 显示全部楼层
呵呵,,你可以向官方提交你的修改代码~~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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