免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10851 | 回复: 13
打印 上一主题 下一主题

gtk有更快的图像刷新方法吗 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-10 13:21 |只看该作者 |倒序浏览
我用gtk来实现了一个图片的过渡效果,每一帧画面处理完后调用gtk_widget_queue_draw_area来引发expose_event事件,然后在expose_event事件的回调函数中绘制图像,在pc上效果还可以接收,可是在嵌入式机器里面反应巨慢,我测试了一下,在我引发信号到进入到expose_event回调函数里要几百毫秒的时间,这显然是太慢了(希望能在10毫秒以内),gtk的机制如此没办法,不知道除了这样做还没有更实时的绘制方法,即我每帧的画面处理完后能立即显示出来,知道的朋友还望不吝赐教,小弟感激不尽!

论坛徽章:
0
2 [报告]
发表于 2007-12-10 14:21 |只看该作者
直接用个线程不就可以了,搞个信号量,然后让这个线程等待信号量,图片处理的时候会占用信号量,而绘制线程就等待信号量,取得信号量后直接gtk_window_draw_rgb就可以了。
draw图片的时候要前后加上 gdk_threads_enter(),gdk_threads_leave()

论坛徽章:
0
3 [报告]
发表于 2007-12-10 14:22 |只看该作者
你的平台是GTKFB吗,移植方便吗?移植完成后需要多大空间?

论坛徽章:
0
4 [报告]
发表于 2007-12-10 16:17 |只看该作者
多谢二楼的回复!按你的意思那就是调用gtk_window_draw_rgb()就立即可以显示了吗,不需要等到触发expose_event事件到了就行了,如果这样的话就好办了,我每帧处理完直接调它就行了,不用设置无效区了,那就真是太理想了,不过你这函数根本就不存在还是你打错了呀,但我看到的一些代码都是要设置无效区的

===》三楼:我的就是gtk+dfb的,感觉移植后控件和内存都耗的巨大,可能优化的不够,现在速度和内存占用都不理想

论坛徽章:
0
5 [报告]
发表于 2007-12-10 16:44 |只看该作者
SORRY,确实打错了,是gdk_draw_rgb_image

论坛徽章:
0
6 [报告]
发表于 2007-12-10 18:01 |只看该作者
我试了一下,你说的的确是可以的,我调用gdk_draw_rgb_image()后是可以立即画出来,不过是在pc上,我pc的gtk是2.10,但是嵌入式中画不出来,可能gtk+dfb中没有支持到这个函数,郁闷了

论坛徽章:
0
7 [报告]
发表于 2007-12-10 18:49 |只看该作者
又测试了一下,我原来在expose-event回调函数里面用gdk_draw_pixbuf()画的,现在直接在每一帧处理完了调用它也可以画出来的,和gdk_draw_rgb_image()效果一样,现在的问题是在pc上这两个函数调用都可以刷新画面,可是在gtk+dfb构架的嵌入式机器上就都画不出来,除非每一帧处理完设置无效区域,然后在expose-event回调函数中调他们,难道gtk+dfb的构架就只能在expose-event的回调函数中来画图吗

论坛徽章:
0
8 [报告]
发表于 2007-12-11 17:17 |只看该作者
解决了吗?我最近也需要做这些,解决后希望告知一声

论坛徽章:
0
9 [报告]
发表于 2007-12-11 19:03 |只看该作者
考虑下gtk_widget_send_expose直接进入重绘

论坛徽章:
0
10 [报告]
发表于 2007-12-13 09:01 |只看该作者
GTK机制如此,导致各种方法都不能有效加速画面的刷新速度,我现在的做法是在gdk-directfb层面增加一个接口,重新编译库,使我在gtk程序中可以调用该接口取得gdk的图像渲染所使用的dfb的surface,然后我在动画效果时的代码实际上是一段dfb程序,将图像直接渲染到该surface上,跳过了gdk的那些东东,我试了一下初步取得成功,并且不影响gtk窗口的事件处理,全屏从上到下依次画隔行直线速度还不错,继续改进一下看看图片显示速度怎么样,我弄成功的话将方法写出来大家一起讨论讨论。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP