Windows 7 GDI加速之谜:我们能否以编程方式启用它?是的我们(有点)可以!但是怎么样?

时间:2011-03-06 04:20:00

标签: winapi graphics gdi

注意:这可能似乎就像一个超级用户问题,但请完整阅读 - 这是一个编程问题。


所以they removed GDI acceleration from Windows 7,现在经典的主题动画看起来很糟糕。而且因为这是一个基本的设计变更,没有办法解决它,对吧?

错!

今天当VLC媒体播放器运行时切换到经典视图(关闭Aero)时,我感到非常惊讶。通常情况下,最大化/最小化动画看起来很糟糕(它们几乎不会出现),但在VLC运行时,动画非常完美,就像在XP上一样!当我关闭VLC时,它们又变得可怕了。 (当媒体播放时,它们比玩家闲置时更好。)

在我开始制作3D游戏并注意到动画已经改进之前的某个时候我再现了这个,但我认为这是与DirectX相关的问题。我试图弄清楚哪些函数调用导致了改进,但没有运气。所以当我注意到与VLC相同的行为时,我感到非常惊讶,因为它播放视频,只有音频(甚至不是可视化!) - 然而播放音频提高了我的GDI图形性能,使得我认为也许,也许,Windows 7确实有某种GDI加速。 (?)

如果这有所不同,我的显卡是NVIDIA GT 330M,PowerMizer关闭。我控制了我能想到的每个变量,除了VLC是否正在运行,所以我几乎可以排除任何与显卡功能相关的内容。


所以,现在我的问题是:

有没有人知道哪些API调用可能导致这种改进,以及它们是否实际与图形有关?

我已经尝试制作一个调用IDirectDraw::CreateSurface的程序,并且只是在后台运行(希望它能像我的3D游戏那样做),但是没有;没有任何区别。我甚至不确定它是否与图形相关的API调用可能导致这种情况,因为就像我说的那样,VLC正在播放音乐,而不是视频。对于我来说,当多媒体应用程序运行时,为什么性能会改进,这是一个谜,所以任何洞察内部发生的事情都会受到赞赏。 :)

1 个答案:

答案 0 :(得分:5)

它可能只是系统时钟节拍周期的一个因素。运行VLC可能会将时钟周期改为每1ms,从而使动画更顺畅地运行。

使用Clockres检查系统计时器分辨率,无论是否运行VLC,都可以查看它是否有所作为。

请参阅timeBeginPeriod功能,了解如何自行设置时间段。请记住,周期越短,您的CPU在蜱之间睡眠的时间就越短,并且它会越热。