socketref,再见!高德

https://github.com/adoggie

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  246 Posts :: 4 Stories :: 312 Comments :: 0 Trackbacks

常用链接

留言簿(54)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

由于最近也是比较有时间,想着将Windows版本的地图绘制引擎移植到Linux。
地图Render部分采用的是Qt,所以过程非常顺利,用Eclipse+CDT重建工程,略微几个小改动便完成了移植。
但之后发现了Qt带来的问题了,地图绘制引擎支持并发处理多个绘制请求,不同的绘制请求将在不同的线程Thread中被执行,多线程的情况便出现了问题,提示QPixmap不能在非UI线程被构造,如果强行构造,便出现了内存数据访问违例的异常错误,进程直接coredump,这个问题困扰了一些时间;
之后改了改代码,将数据处理和绘制代码隔离开,线程thread中进行数据加载、分析、计算,绘制代码采用Qt的signal/slot机制完成,就是工作线程处理好数据之后通过emit signal将绘制请求发送给ui主线程的slot处理函数。这种实现方法的问题在于绘制工作都将被串行执行,性能下降。
几年前在移植libsvg到wince时采用过cairo( cairographices.org) ,有点使用经验,且cairo是gnome的标准图形库,性能应该不错,所以直接改为cairo。
cairomm是cairo的c++包装,编译还需sig++,cairo的api还是挺丰富的,字体,反走样,矩阵... 操作也是相当简单 
很快移植完成,运行效果还是比较满意,现在正考虑地图引擎移植到ios设备,目前需要琢磨cairomm,sig++,pixmap之类的东西如何移植问题(或者直接采用ios的Fundation的绘图api)

posted on 2013-08-31 15:39 放屁阿狗 阅读(2477) 评论(1)  编辑 收藏 引用 所属分类: MapGisAGG/GEOS/Cairo/SVGWebGisswMap

Feedback

# re: 移植地图绘制引擎从Qt切换到Cairo 2013-09-25 10:27 uplusplus
double buffer后,就需不要直接用UI绘制了  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理