Eli asked about OpenGL, Direct Draw, and WPF, and how they work with Desktop composition...

OpenGL can go through one of three paths in Windows Vista depending on how your computer is configured.

  1. MSOGL - this is an implementation of OpenGL 1.4 that uses Direct3Dunder the covers to hardware accellerate the application.
  2. Legacy ICD's - These are the ICD's that are available today for use on Windows XP. These will continue to work on Windows Vista, but will disable the DWM when they are loaded in to the process of the application that's using OpenGL. The reason for this is that Legacy ICD's operate directly on the GPU without going through Windows at all, and we have no way of redirecting application's output in a stable, predictablemanner.
  3. Windows Vista ICD's - this is a new path for 3rd party ICD's introduced for Windows Vista that will work in a way that is compatible with desktop composition. Essentially allowing direct access to the GPU for hardware accellaration, but then having the final surface that appears to be the front buffer to the application actually be a shared surface that gets composed by the DWM

DirectDraw works by creating shared surface and allowing you to draw to it, but if your application locks the primary for drawing, this will cause the DWM to shut down also, because the applicaiton is essentially saying "I'm a full-screen application, so give me the the whole screen to draw to, instead of whoever is currently using it".

WPF is hardware accellerated for things like text, geometrry, etc. and presents to a D3D shared surface which is the composed to the desktop by the DWM.

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

You can also stay up to date using your favorite aggregator by subscribing to the CommentRss Feed

优质内容筛选与推荐>>
1、ASP.NET的页面间传值方法
2、字母数字排序
3、协助用户搜寻您的网站 { 创建一个OpenSearch }
4、Leetcode-344 Reverse String
5、【前端GUI】——网站设计的重要知识点总结&思维导图(一)


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。