为什么OS X没有与Windows相同的闪烁问题?

前端之家收集整理的这篇文章主要介绍了为什么OS X没有与Windows相同的闪烁问题?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在阅读Larry Osterman最新的一篇关于 debugging a flickering problem in the Windows Vista/7 volume control博客文章,我突然意识到,我记得在我的OS X笔记本电脑上看到应用闪烁.即使应用程序似乎写得不好也避免了我的经验中的闪烁问题.没有这个变成苹果与Windows的争论(请),为什么OS X应用程序似乎没有相同的闪烁问题?

我有麻烦相信,苹果开发人员在编程无闪烁的GUI方面是惊人的,而Windows程序员吮吸,那么原因是什么? OS X API是否需要所有GUI来实现双缓冲?虽然一些应用程序具有缓慢的双缓冲大小调整行为,但许多应用程序仍然避免闪烁. OS X的重绘流程与Windows基本不同,完全避免WM_ERASEBKGRND问题吗?还是有其他可能性,我没看到?

更新:谢谢你的答案.我希望我可以选择ken和cb160的答案,因为他们都是有帮助的.

Windows Vista / 7和OSX都使用合成引擎在屏幕上绘制光栅位图.这些合成引擎负责处理所有窗口的输出并绘制最终的屏幕图像.这种合成方法是如何在最小化码头和航空如何绘制半透明边界时使用精灵效果.它们还防止闪烁,就像位图填充屏幕的特定区域不可用一样,它将使用已经存在的图像而不是绘制空白区域.

自从第一次发货以来,OSX已经有了一个合成引擎.当时,很多人虽然这样做是一个疯狂的评价,因为当时所有的视频卡都在优化时绘制位图(即Windows按钮和边框),而不是合成图像.在OSX的后续版本中,合成功能被推送到GPU(在Quartz Extreme中),因此cpu占用了很大的负载,并且实现了更多的效果.

因为Windows合成器仅在Windows Vista中添加,然后只有当有GPU可用并且您具有正确的操作系统版本时,它并不像OSX中的Quartz Compositer那样无瑕疵.因为在Windows中并不总是使用合成器,所以当一个区域被空白并且负责绘图的应用程序不能够足够重新绘制该区域时,就会发生闪烁.

猜你在找的Windows相关文章