社区
图形处理/算法
帖子详情
Windows下 提高绘图速度的方法
Tinary3v0
2011-11-30 01:28:59
加精
由于我需要在1024* 768这样大的窗口里面,进行每秒中上百次的绘图,现在采用GDI与GDI+混合的方式,当然是为了达到一定的效果。
现在绘图速度很慢,但是由于时间上的要求,这个问题必须解决。
不知道大家有什么好方法没?
我在考虑是不是在平面里面用GDI或者GDI+不合适。
如果仅仅为了仿真平面效果,采用OpenGL其他的三维方式能不能实现?
那个效率相对来说比较高?
另外,有没有让自己的程序直接占用绝大部分CPU资源的方法(开机只运行这一个程序)?
...全文
6164
193
打赏
收藏
微信扫一扫
点击复制链接
分享
下载分享明细
分享
举报
写回复
193 条
回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
j-k
2013-09-04
我以前用mirror driver几乎可以达到每秒100帧了,完全没必要,dx也试过,介乎gdi和mirror driver之间。
打赏
举报
回复
赞
熬夜程序猴
2013-04-01
工控里 仿真示波器 这么快的刷新速度还远远不够
打赏
举报
回复
赞
儿女情长
2012-12-28
mark
打赏
举报
回复
赞
xqhrs232
2012-10-25
[Quote=引用 151 楼 的回复:]
引用 116 楼 wallescai 的回复:
使用GDI或者GDI+基本上都没有可能达到楼主的要求的.
否则也不会出现DX和OPENGL之类的东西了.
不过楼主的要求似乎有点不合理, 一般的液晶显示器才60赫兹, 也就是说一秒钟所能显示的图片是60幅, 你那多出来的几十帧要如何显示出来呢?
需要声明的是:1)使用GDI在合适的算法下达到100FPS完全可能;实例为证,见我的Bl……
[/Quote]
希望你的BLOG对我目前遇到的问题有所帮助!!!
打赏
举报
回复
赞
绿绿的阳光
2012-09-29
通过回帖发现了 好多小牛,两个大牛,一个老牛
计算机软件行业果然是个无底洞,感觉花一辈子时间都学不完
打赏
举报
回复
赞
clever101
2012-03-21
参考:
提高二维矢量绘图效率之一般做法
打赏
举报
回复
赞
boywang
2012-01-19
说到底还是直接内存直接计算相关的数据,然后再显示来的快。
打赏
举报
回复
赞
panshoup
2011-12-12
等楼主的代码。。。。。。。。
打赏
举报
回复
赞
xumei_
2011-12-11
晕 楼主看电影的时候有跳帧的感觉吗? 根本不需要这么高的刷新频率,请检查一下你的代码是不是有问题吧
打赏
举报
回复
赞
wwweeeiii_mahu
2011-12-10
用OpenGL效率较高,但注意最好不要和GDI混着用,如果程序界面绘图既有OpenGL又有GDI,一方面刷新时GDI闪烁的利害,另外,由于OpenGL绘图时独占DC,很可能导致GDI获取DC失败从而导致异常。另外,50毫秒刷一次效果就非常不错了。最近几年一直用OpenGL,感觉效率可以。
打赏
举报
回复
赞
hhloong
2011-12-10
我觉得用遍历的方法是最好实现的,哈哈
打赏
举报
回复
赞
jonnywoods
2011-12-09
是吧????????????????
打赏
举报
回复
赞
full1005
2011-12-09
谢谢楼主的奉献
打赏
举报
回复
赞
米娅
2011-12-09
脏矩形技术+双缓冲
打赏
举报
回复
赞
xyqqtt21
2011-12-09
我一直在为这个问题头痛了很久,不过这不失为一种很好的方法
打赏
举报
回复
赞
z3410218746
2011-12-08
刷新率那么高,有什么好处啊。
打赏
举报
回复
赞
taoxu0823
2011-12-08
不错啊
打赏
举报
回复
赞
asight
2011-12-07
楼主真有前瞻性,考虑到了120hz的显示器吧,gdi的2d贴图速度绝对超过这个
打赏
举报
回复
赞
wsk91188
2011-12-07
谢谢了。看看
打赏
举报
回复
赞
lanzhengpeng2
2011-12-07
[Quote=引用 132 楼 tinary3v0 的回复:]
谢谢大家的回答,问题问得不是很好,说刷新100次其实也不是随便说的,
可以这样说,一个圆形要从屏幕(1024*768)的左边移动到右边,限时为1秒,在移动过程中
需要对768*768大小的区域进行刷新(刷新过程要对这个区域贴图3次左右)
移动过程要求不能看出有明显的不连续,就是平时说的“不能有跳帧的感觉”
我现在时GDI和GDI+同时使用,已经使用了双缓存,程序现在运行基本上就是按照代码……
[/Quote]
并不完全需要提高刷新率来提升移动的平滑性.觉得不平滑的原因很很多.
首先要排除帧数率不是很平稳的影响,一般做法是绘制时间小于显示设备刷新的时间间隔的倍数,然后利用显示设备的刷新间隔非常稳定的特性来提供固定的时间间隔.
其次,要严格按照下一次显示出来的时间计算图像的像素位置.这个位置就不能是整数了,必须是浮点数.这样就存在亚像素的问题.需要对亚像素进行平滑处理.而这些处理又涉及到显示设备的Gamma值是否调整好了,是否跟你的图形使用的Gamma值匹配等问题.
如果图像存在缩放,这个平滑就更难做.
打赏
举报
回复
赞
加载更多回复(124)
相关推荐
Windows
窗体的.Net框架
绘图
技术实现
方法
主要介绍了
Windows
窗体的.Net框架
绘图
技术实现
方法
,非常实用,需要的朋友可以参考
下
C#
Windows
窗体的.Net 框架
绘图
技术
当编写一个典型的
Windows
窗体程序时,窗体和控件的绘制、效果等操作是不需要特别加以考虑的。这是为什么呢?因为通过使用 .Net 框架,开发人员可以拖动一系列的控件到窗体上,并书写一些简单的与事件相关联的代码...
使用surface
提高
绘图
速度
以前在
windows
下
开发时做过
绘图
的程序,现在在Linux
下
绘图
首先就想到了双缓冲,我就沿着这个思路,找到了
下
面这个
方法
。 首先,创建一个surfacesurface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, screen...
TeeChart
绘图
控件 - 之三 -
提高
绘图
的效率
TeeChart是个很强大的控件,其
绘图
能力之强,其他控件难以比拟,但是有个问题就是他的
绘图
速度
,其实TeeChart
绘图
速度
还是很快的,只是大家一直都没正确运用其功能所以导致
绘图
速度
慢的假象。
下
面说说影响
绘图
...
提高
图形高效
绘图
机制的
方法
--旧事重拾
如果把图形技术划分为化学元素周期表... 双缓冲即在内存中创建一个与屏幕
绘图
区域一致的对象,先将图形绘制到内存中的这个对象上,再一次性将这个对象上的图形拷贝到屏幕上,这样能大大加快
绘图
的
速度
。双缓冲实现过程
发帖
图形处理/算法
微信扫一扫
点击复制链接
分享社区
下载分享明细
1.9w+
社区成员
5.0w+
社区内容
VC/MFC 图形处理/算法
社区管理员
加入社区
帖子事件
创建了帖子
2011-11-30 01:28
社区公告
暂无公告