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)
相关推荐
发帖
图形处理/算法

1.9w+

社区成员

VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
帖子事件
创建了帖子
2011-11-30 01:28
社区公告
暂无公告