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

Meh*_*dad 3 graphics winapi gdi

注意:这可能看起来像一个超级用户问题,但请完整阅读 - 这是一个编程问题.


所以他们从Windows 7中删除了GDI加速,现在经典的主题动画看起来很糟糕.而且因为这是一项基本的设计变更,所以没有办法解决它,对吧?

错误!

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

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

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


那么,现在我的问题:

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

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

Gab*_*abe 5

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

使用Clockres检查系统定时器分辨率,无论是否运行VLC,看它是否有所作为.

请参阅有关timeBeginPeriod如何自行设置时间段的功能.请记住,周期越短,您的CPU在滴答之间能够睡眠的时间就越短,并且它将运行得越热.