当前位置:  开发笔记 > 编程语言 > 正文

GDI已经加速了.有谁知道这发生的时间?

如何解决《GDI已经加速了.有谁知道这发生的时间?》经验,为你挑选了2个好方法。

草拟这个问题的背景:在工作中我们使用Dell Precision工作站.我现在有一台NVidia Quadro FX1700.我的团队正在为实时数据采集系统开发图形组件.因此,我们一直在关注图形操作是否不会占用过多的CPU时间.为了快速检查,我们运行了几个测试程序,它们以指定的速率(例如10 fps)绘制场景,我们使用普通的旧任务管理器来查看CPU使用率的位置.其中一个程序很重视GDI DrawRectangle调用(已填充).这个程序总是占用大约40%的CPU用户时间,但是大约一年左右(这里只是猜测)它只使用大约2-3%的内核时间.很明显,这里正在进行一些硬件加速.事实上,如果我关闭HW-accell,我们' 重新回到原来的40%用户时间.所有这些当然都是好消息,因为我们已经在考虑转向OpenGL了.年复一年,GDI从未获得硬件加速的好处.直到前一段时间.

有谁知道更多关于这个?微软这样做了吗?或者是gfx-card供应商具体?

编辑

Thnx已经答案了(Ferrucio,Torlack和Rob Walker),但我的问题还没有得到解答.我们在这里谈论一个填充的矩形.可能是最优秀的功能:只需将几个坐标发送到GPU并让它翻录.但它总是在CPU端实现.到目前为止,答案让我相信NVidia终于看到了光明(超过10年后)并加速了GDI.没有关于此的公告?根本没有信息可以找到.我的内部客户问我关于图形加速的问题,我只能说"好吧,我们很幸运".

EDIT2

根据不同的答案,它似乎与驱动程序相关.因此,NVidia多年来为其工作站卡制作了糟糕的GDI驱动程序.在这家公司中,GDI没有被加速并且所有测试证实了这一点,这确实是一个公认的事实.



1> Ferruccio..:

GDI通过调用图形设备驱动程序中的各种函数来工作.每个驱动程序都必须实现一组核心功能.其他功能可以由驱动程序实现.如果不是,GDI将自己执行这些功能.

如果某个特定功能没有在硬件中实现,那么驱动程序就没有必要执行该功能的软件实现,因为GDI可能会做得更好.GDI针对性能进行了极好的优化.

随着越来越多的功能在硬件中实现,这些功能不仅表现得更好,而且GDI的工作也更少,从而减少了在图形上花费的CPU时间.

也可能是图形卡供应商为了快速将卡推向市场而可能没有实现卡可以执行的所有可能的硬件功能.然后,该驱动程序的更高版本可以实现该功能,从而提高性能.



2> Aardvark..:

GDI加速了很长一段时间.我记得它在某种程度上取决于你的硬件和驱动程序.为什么你最近看到这种性能上的跳跃似乎很奇怪.

但是,不要太高兴 - Vista中不再支持GDI硬件加速.新的桌面合成引擎不支持它.但是,在Vista中你可以获得快速移动的窗口,因为内容并不总是必须由应用程序重新绘制(我认为没有撕裂?).

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有