查看: 1480|回复: 4

osgEarth2.5中文支持 如何解决

[复制链接]

该用户从未签到

发表于 2014-7-25 12:47:47 | 显示全部楼层 |阅读模式

重载了源码AnnotationUtils.cpp中
osg:rawable*
        AnnotationUtils::createTextDrawable(const std::wstring& text,
        const TextSymbol*  symbol,
        const osg::Vec3&   positionOffset )
然后又重载了PlaceNode.cpp中
PlaceNode:laceNode(MapNode*           mapNode,
        const GeoPoint&    position,
        osg::Image*        image,
        const std::wstring& text,
        const Style&       style ) :

OrthoNode( mapNode, position ),
        _image   ( image ),
        _wtext   ( text ),
        _style   ( style ),
        _geode   ( 0L )
{
        initw();
}

在加载中文地标的时候,出现的还是乱码,如何解决
osgEarth::Annotation::PlaceNode *pn = new osgEarth::Annotation::PlaceNode(mapNode, mappnt,tempImg,"中国",/*strName.GetBuffer(0),*/ style);

该用户从未签到

发表于 2014-7-25 22:57:55 | 显示全部楼层
其实完全不需要这么麻烦。
字体设置为中文字体(譬如:simhei.ttf);并且设置字符编码为:ENCODING_UTF8;传入的字体只需要utf8即可
(如:osgDB::convertStringFromCurrentCodePageToUTF8("中文字体"))

该用户从未签到

发表于 2014-7-27 12:16:33 | 显示全部楼层
楼上的方法完全正确。
不建议修改源码

该用户从未签到

发表于 2015-3-4 09:05:17 | 显示全部楼层
cug_osg 发表于 2014-7-25 22:57
其实完全不需要这么麻烦。
字体设置为中文字体(譬如:simhei.ttf);并且设置字符编码为:ENCODING_UTF8; ...

能说的详细些吗?在线等,急求,
我的问题是:
        中文无法显示
        如想 显示“aa啊啊bb”,最终的结果是“aabb”

该用户从未签到

发表于 2015-3-4 10:50:38 | 显示全部楼层
cug_osg 发表于 2014-7-25 22:57
其实完全不需要这么麻烦。
字体设置为中文字体(譬如:simhei.ttf);并且设置字符编码为:ENCODING_UTF8; ...

遇到同样的问题,可以提供一个示例程序吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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