<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">DirectX Developer Blog</title><subtitle type="html" /><id>http://blogs.msdn.com/b/directx/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/b/directx/atom.aspx" /><generator uri="http://telligent.com" version="5.6.50428.7875">Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><updated>2009-04-20T21:32:00Z</updated><entry><title>Introducing the DirectCompute Lecture Series! </title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2010/06/15/introducing-the-directcompute-lecture-series.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2010/06/15/introducing-the-directcompute-lecture-series.aspx</id><published>2010-06-16T01:17:00Z</published><updated>2010-06-16T01:17:00Z</updated><content type="html">&lt;p&gt;We are very excited to announce the DirectCompute Lecture Series, which starts today, June 14th, and runs for the next three weeks. A component of DirectX, DirectCompute is Microsoft&amp;rsquo;s GPGPU programming solution that enables developers to utilize the GPU for general purpose computing on Windows. In today&amp;rsquo;s opening video lecture, Robert Hess hosts a round table discussion of thought leaders in parallel computing. Six lectures will follow about DirectCompute, developing DirectCompute applications, and tips for optimizing performance and integrating the DirectCompute data into the graphics pipeline. &lt;/p&gt;
&lt;p&gt;Each week we will release two new lectures, Mondays and Fridays, that are presented by developers experienced with parallel computing and DirectCompute. Several lectures will address key parallel programing scenarios. The series will begin with high-level topics common to most DirectCompute scenarios, and continue into deeper lectures that examine more complex problems and algorithms.&lt;/p&gt;
&lt;p&gt;With the realization that GPUs are useful for purposes other than graphics, the need for APIs to harness their potential has grown rapidly over the last several years.&amp;nbsp; Microsoft developed DirectCompute in response to this need. Its benefits for mass-market applications are numerous. Because it can run on all DirectX 11 hardware and most DirectX 10.1 hardware, you can safely use DirectCompute for core application functionality across many customer segments.&amp;nbsp; Additionally, as part of the Direct3D API, DirectCompute can be seamlessly integrated with games, CAD tools, and other graphics applications.&lt;/p&gt;
&lt;p&gt;The integration with Direct3D makes DirectCompute an attractive choice for any scientific computing applications that require data visualization. The Compute Shader Extensions library provides access to high-performance implementations of common computing algorithms, such as parallel prefix reduction and multi-dimensional fast Fourier transform.&lt;/p&gt;
&lt;p&gt;If you are interested in doing some GPU computing, look for our video lectures at &lt;a href="http://go.microsoft.com/fwlink/?LinkId=194362"&gt;http://go.microsoft.com/fwlink/?LinkId=194362&lt;/a&gt;, which will point to the lectures as they become available. &lt;/p&gt;
&lt;p&gt;Currently, the following lectures are planned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Direct Compute Expert Roundtable&lt;/li&gt;
&lt;li&gt;Lecture Course Level - 100&lt;/li&gt;
&lt;li&gt;Recommended Prerequisite:&amp;nbsp; N/A&lt;/li&gt;
&lt;li&gt;Mediator: Robert Hess (Director, Platform Evangelism, Microsoft Corporation)&lt;/li&gt;
&lt;li&gt;Participants: 
&lt;ul&gt;
&lt;li&gt;Eric Young (Manager of Developer Technology, NVIDIA Corporation)&lt;/li&gt;
&lt;li&gt;Chas Boyd (Program Manager Architect&amp;nbsp; Windows Graphics,&amp;nbsp; Microsoft Corporation)&lt;/li&gt;
&lt;li&gt;Justin Hensley (Senior MTS, AMD Office of CTO, ATI/AMD)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Lecture Length: 45 Minutes&lt;/li&gt;
&lt;li&gt;Web Release Date:&amp;nbsp; Monday 6/14/2010&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;Introduction to DirectCompute&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lecture Course Level:&amp;nbsp; 101&lt;/li&gt;
&lt;li&gt;Recommended Prerequisite:&amp;nbsp; None&lt;/li&gt;
&lt;li&gt;Presenter: Chas Boyd (Program Manager Architect Windows Graphics, Microsoft Corporation)&lt;/li&gt;
&lt;li&gt;Lecture Length: 25 minutes&lt;/li&gt;
&lt;li&gt;Web Release Date:&amp;nbsp; Friday 6/18/2010&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;DirectCompute Memory Patterns&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Presenter: Matt Sandy (Program Manager Microsoft Graphics, Microsoft Corporation)&lt;/li&gt;
&lt;li&gt;Lecture Course Level:&amp;nbsp; 110&lt;/li&gt;
&lt;li&gt;Recommended Prerequisite: Introduction to DirectCompute&lt;/li&gt;
&lt;li&gt;Lecture Length: 15 Minutes&lt;/li&gt;
&lt;li&gt;Web Release Date:&amp;nbsp; Monday 6/21/2010&amp;nbsp; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;Basics of DirectCompute Application Development&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Presenter: Jason Yang (MTS Software Engineer, ATI/AMD)&lt;/li&gt;
&lt;li&gt;Lecture Course Level:&amp;nbsp; 120&lt;/li&gt;
&lt;li&gt;Recommended Prerequisite:&amp;nbsp; Introduction to DirectCompute&lt;/li&gt;
&lt;li&gt;Lecture Length: 30 minutes&lt;/li&gt;
&lt;li&gt;Web Release Date:&amp;nbsp; Friday 6/25/2010&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;DirectCompute GPU Optimizations and Performance&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Presenter: James Fung (Developer Technology, NVIDIA Corporation)&lt;/li&gt;
&lt;li&gt;Lecture Corse Level:&amp;nbsp; 210&lt;/li&gt;
&lt;li&gt;Recommended Prerequisite:&amp;nbsp; DirectCompute Memory Patterns&lt;/li&gt;
&lt;li&gt;Lecture Length: 22 minutes&lt;/li&gt;
&lt;li&gt;Web Release Date: Monday 6/28/2010&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;DirectCompute GPU Accelerated Physics&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Presenter:&amp;nbsp; Lee Howes (Sr. Software Development Engineer, ATI/AMD)&lt;/li&gt;
&lt;li&gt;Lecture Course Level:&amp;nbsp; 230&lt;/li&gt;
&lt;li&gt;Recommended Prerequisite:&amp;nbsp; DirectCompute Memory Patterns and Basics of DirectCompute Application Development &lt;/li&gt;
&lt;li&gt;Lecture Length: 30 minutes&lt;/li&gt;
&lt;li&gt;Web Release Date: Friday 7/1/2010&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;DirectCompute - Integration with the Graphics Pipeline&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Presenter: James Fung (Developer Technology, NVIDIA Corporation)&lt;/li&gt;
&lt;li&gt;Lecture Course Level:&amp;nbsp; 250&lt;/li&gt;
&lt;li&gt;Recommended Prerequisite:&amp;nbsp; &lt;/li&gt;
&lt;li&gt;Lecture Length: 18 minutes&lt;/li&gt;
&lt;li&gt;Web Release Date:&amp;nbsp; Monday 7/5/2010&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10025527" width="1" height="1"&gt;</content><author><name>Kam VedBrat</name><uri>http://blogs.msdn.com/KamVedBrat/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>New DirectX Whitepapers and Samples Published for Windows 7 and Windows Vista</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2010/01/06/direct3d-whitepapers-and-samples-published-for-windows-7.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2010/01/06/direct3d-whitepapers-and-samples-published-for-windows-7.aspx</id><published>2010-01-06T21:17:00Z</published><updated>2010-01-06T21:17:00Z</updated><content type="html">&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph&gt;&lt;A href="http://code.msdn.microsoft.com/D3D9ExFlipEx/"&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;&lt;B&gt;Surface Sharing Support for Windows Graphics Applications Whitepaper and Samples&lt;/B&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt; 
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: black"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: black"&gt;&lt;o:p&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 12pt"&gt;A whitepaper and two&amp;nbsp;samples were published to showcase interoperability support using&amp;nbsp;surface sharing between Windows graphics APIs: Direct3D 11, Direct2D, Direct3D 10, and Direct3D 9Ex.&amp;nbsp; The interoperability support explained applies to both Windows 7 and Windows Client Platform Update for Windows Vista.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 12pt"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 12pt"&gt;Both the whitepaper and sample applications help developers use multiple APIs to render to the same surface in an application designed for Windows 7 or Windows Vista operating systems. &amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 12pt; mso-ansi-language: EN" lang=EN&gt;&lt;FONT face=Calibri&gt;-&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 7pt; mso-ansi-language: EN" lang=EN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: black; FONT-SIZE: 12pt; mso-ansi-language: EN" lang=EN&gt;Best practice guidelines and pointers to additional resources are available in this whitepaper &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 12pt; mso-ansi-language: EN" lang=EN&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ee913554(VS.85).aspx"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;http://msdn.microsoft.com/en-us/library/ee913554(VS.85).aspx&lt;/SPAN&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 12pt; mso-ansi-language: EN" lang=EN&gt;&lt;FONT face=Calibri&gt;-&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 7pt; mso-ansi-language: EN" lang=EN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE: 12pt; mso-ansi-language: EN" lang=EN&gt;Sample application for synchronized shared surface support is available on &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 12pt; mso-ansi-language: EN" lang=EN&gt;&lt;A href="http://code.msdn.microsoft.com/DXGISyncSharedSurf"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;http://code.msdn.microsoft.com/DXGISyncSharedSurf&lt;/SPAN&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; mso-ansi-language: EN" lang=EN&gt;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 12pt; mso-ansi-language: EN" lang=EN&gt;&lt;FONT face=Calibri&gt;-&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 7pt; mso-ansi-language: EN" lang=EN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="FONT-SIZE: 12pt; mso-ansi-language: EN" lang=EN&gt;Sample application using the shared surface queue helper utility&amp;nbsp;is available on &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 12pt; mso-ansi-language: EN" lang=EN&gt;&lt;A href="http://code.msdn.microsoft.com/D3D9ExDXGISharedSurf"&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;http://code.msdn.microsoft.com/D3D9ExDXGISharedSurf&lt;/SPAN&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l1 level1 lfo2" class=MsoListParagraph&gt;&lt;A href="http://code.msdn.microsoft.com/D3D9ExDXGISharedSurf"&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;o:p&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;Windows 7 Direct3D9Ex Presentation Improvements for Video Applications Whitepaper and Sample&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT face=Calibri&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;SPAN style="COLOR: black"&gt;Flip Mode Present and its associated Present Statistics in Direct3D 9Ex and Desktop Window Manager were added in Windows 7 to allow applications to reduce the system resource load when DWM is enabled.&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: black; mso-ansi-language: EN" lang=EN&gt;Present Statistics enhancements associated with Flip Mode Present enable Direct3D 9Ex applications to better control the rate of presentation by providing real-time feedback and correction mechanisms. &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size=3 face=Calibri&gt;Detailed explanations and pointers to sample resources are included in this&amp;nbsp;whitepaper &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ee890072(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ee890072(VS.85).aspx"&gt;&lt;FONT size=3 face=Calibri&gt;http://msdn.microsoft.com/en-us/library/ee890072(VS.85).aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size=3 face=Calibri&gt;Sample application using Direct3D9Ex Flip Mode Present and its Present Statisics is available on &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://code.msdn.microsoft.com/D3D9ExFlipEx/"&gt;&lt;FONT size=3 face=Calibri&gt;http://code.msdn.microsoft.com/D3D9ExFlipEx/&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9944819" width="1" height="1"&gt;</content><author><name>maryluo</name><uri>http://blogs.msdn.com/maryluo/ProfileUrlRedirect.ashx</uri></author><category term="DX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DX/" /><category term="Graphics" scheme="http://blogs.msdn.com/b/directx/archive/tags/Graphics/" /><category term="DirectX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectX/" /><category term="GDI" scheme="http://blogs.msdn.com/b/directx/archive/tags/GDI/" /><category term="Direct2D" scheme="http://blogs.msdn.com/b/directx/archive/tags/Direct2D/" /><category term="direct3d" scheme="http://blogs.msdn.com/b/directx/archive/tags/direct3d/" /></entry><entry><title>Direct2D and DirectWrite</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/12/18/direct2d-and-directwrite.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/12/18/direct2d-and-directwrite.aspx</id><published>2009-12-18T02:04:00Z</published><updated>2009-12-18T02:04:00Z</updated><content type="html">&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;One of the more interesting aspects of Direct2D is that it cooperates with another API, DirectWrite in order to handle text. This is unlike other monolithic APIs, such as GDI, GDI+ or WPF. This post explores why these components are separated in this way, as well as differences and similarities between them.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H1 style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;SPAN style="TEXT-DECORATION: none"&gt;&lt;U&gt;&lt;FONT size=4 face=Calibri&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/H1&gt;
&lt;H1 style="MARGIN: 0in 0in 0pt"&gt;&lt;U&gt;&lt;FONT size=4&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/U&gt;&amp;nbsp;&lt;/H1&gt;
&lt;H1 style="MARGIN: 0in 0in 0pt"&gt;&lt;U&gt;&lt;FONT size=4&gt;&lt;FONT face=Calibri&gt;Incremental Adoption&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/H1&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;One of the lessons learned by the DirectX team is that many applications cannot move completely over to a new graphics API in one release. This might be because they need to support plug-ins that still take the older interfaces, because the application itself is too large to port over to a new API in one release or because some part of the newer API is really desirable but the older API is working well enough for other parts of the application. Providing a separate component dedicated to text allows a component to adopt DirectWrite while still leaving their application GDI or GDI+ based. Having two distinct but highly interoperable APIs allows customers to only pay for the IO and working set of the APIs they use in their application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H1 style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=4&gt;&lt;U&gt;&lt;FONT face=Calibri&gt;Text Services versus Rendering&lt;/FONT&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;/H1&gt;
&lt;P style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=4&gt;&lt;U&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="TEXT-DECORATION: none; text-underline: none"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;SPAN style="TEXT-DECORATION: none"&gt;&lt;U&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/H2&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;As applications have evolved, their text processing requirements have grown increasingly complex. Initially, text was generally confined to statically laid-out UI, and the text was rendered within a well-defined box, such as a button. As applications had to be shipped in more languages this approach became more difficult to sustain since both the width and height of the translated text can vary substantially between different languages. To adapt, applications started having to dynamically lay out their UI depending on the actual rendered size of the text, rather than the other way around.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;To help applications with this task, DirectWrite provides the &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;IDWriteTextLayout&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; interface. This API allows an application to specify a piece of text with complex characteristics such as: different fonts and font sizes, underlines, strikethroughs, bi-directional text, effects, ellipsis and even embedded non-glyph characters (such as a bitmap emoticon or an icon). The application can then change various characteristics of the text as it iteratively determines its UI layout. The layout can either position the glyphs ideally based on their widths (as WPF does), or, it can snap the glyphs to the nearest pixel positions (as GDI does). As well as obtaining text measurements, the application can hit test various parts of the text. For example, it might wish to know that a hyperlink in the text has been clicked on.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;The text layout interface is completely decoupled from the input technology and the rendering API the application chooses to use. As shown below:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;&lt;SPAN style="TEXT-DECORATION: none; mso-no-proof: yes; text-underline: none"&gt;&lt;?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /&gt;&lt;v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"&gt;&lt;/v:path&gt;&lt;o:lock v:ext="edit" aspectratio="t"&gt;&lt;/o:lock&gt;&lt;/v:shapetype&gt;&lt;v:shape style="WIDTH: 468pt; HEIGHT: 200.25pt; VISIBILITY: visible" id=Object_x0020_2 type="#_x0000_t75" o:gfxdata="UEsDBBQABgAIAAAAIQC75UiUBQEAAB4CAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbKSRvU7DMBSF&amp;#13;&amp;#10;dyTewfKKEqcMCKEmHfgZgaE8wMW+SSwc27JvS/v23KTJgkoXFsu+P+c7Ol5vDoMTe0zZBl/LVVlJ&amp;#13;&amp;#10;gV4HY31Xy4/tS3EvRSbwBlzwWMsjZrlprq/W22PELHjb51r2RPFBqax7HCCXIaLnThvSAMTP1KkI&amp;#13;&amp;#10;+gs6VLdVdad08ISeCho1ZLN+whZ2jsTzgcsnJwldluLxNDiyagkxOquB2Knae/OLUsyEkjenmdzb&amp;#13;&amp;#10;mG/YhlRnCWPnb8C898bRJGtQvEOiVxjYhtLOxs8AySiT4JuDystlVV4WPeM6tK3VaILeDZxIOSsu&amp;#13;&amp;#10;ti/jidNGNZ3/J08yC1dNv9v8AAAA//8DAFBLAwQUAAYACAAAACEArTA/8cEAAAAyAQAACwAAAF9y&amp;#13;&amp;#10;ZWxzLy5yZWxzhI/NCsIwEITvgu8Q9m7TehCRpr2I4FX0AdZk2wbbJGTj39ubi6AgeJtl2G9m6vYx&amp;#13;&amp;#10;jeJGka13CqqiBEFOe2Ndr+B03C3WIDihMzh6RwqexNA281l9oBFTfuLBBhaZ4ljBkFLYSMl6oAm5&amp;#13;&amp;#10;8IFcdjofJ0z5jL0MqC/Yk1yW5UrGTwY0X0yxNwri3lQgjs+Qk/+zfddZTVuvrxO59CNCmoj3vCwj&amp;#13;&amp;#10;MfaUFOjRhrPHaN4Wv0VV5OYgm1p+LW1eAAAA//8DAFBLAwQUAAYACAAAACEAHUR4w0YLAADvewAA&amp;#13;&amp;#10;HwAAAGNsaXBib2FyZC9kcmF3aW5ncy9kcmF3aW5nMS54bWzsnVlv2zgQx98X2O9A6HXRxjp8BXWL&amp;#13;&amp;#10;Nm2KBdJuEKfoMyPRsba6lqIdp59+Z3hYlmtVSXooalkUiR2RFPkXJc9vhhw/e7FJE7JmvIzzbOa4&amp;#13;&amp;#10;TwcOYVmYR3F2PXM+XJ4+mTikFDSLaJJnbObcstJ58fzPP57R42tOi2UcEmghK4/pzFkKURwfHZXh&amp;#13;&amp;#10;kqW0fJoXLINji5ynVMBbfn0UcXoDLafJkTcYjI5SGmfO86qp11RQsuLxA5pK8vATi05otqYlNJmE&amp;#13;&amp;#10;x7t/0X1Mwm9vmR5n67e8mBfnHHsevl+fcxJHMweUy2gKEjlH+oAuBm+P9mpdVw1sFjzF8vliQTay&amp;#13;&amp;#10;lVv8KdtgG0FC+ONkMHDhv0NCOOYH3nQw0CXC5T+q3mgyHE+nDoEC3sSdBlWBNy2NQN9UH+DFTr/K&amp;#13;&amp;#10;AnuVrb8cKMwINdCLfJVFLCIXLIQZcp0wMt6OHauZgZsmSq3Z3pA9bzLCAWHf/UEAg90b/ghGA3/V&amp;#13;&amp;#10;w4eZo0e37Tk9Lngp3rI8Jfhi5nDsGXZLzi66PiuF6owpJy+J6Y/YzOVgxeZVHt3isK/gN1xWLpKT&amp;#13;&amp;#10;PJEXhWbhMuczJxRcjTEpxVzcJgyLR2xxrqYDvLqAignIMXNY9uTDHEtDR6siyTpxQQiSUn6mmk6u&amp;#13;&amp;#10;4dZLHAJlLunV/PPMmboBjhE7IIswepa94p/gBnWgbRFn+i0UWcKp4JY6X2UhDNyVA9a9KKElVwr3&amp;#13;&amp;#10;iXG8u0E6ebzMkzg6jZMEOy9vV3aScLKmcLbok6u7XCslz0rEbcEWNIRJ/leaPUmEkoLRvQOMqgNh&amp;#13;&amp;#10;uXcgLCs5QCepjNYDuwIvvUqaYDjGDhP62+uDomh9/EofM0msPiiK1ieo9HH9sQsPFjuB1gmqogUa&amp;#13;&amp;#10;7gg08Sby8WBnEKqiBRpVAm0/maxAqIoWaLwj0Djw7TNafnChKlqgSSUQqiM/ye0MQlW0QNMdgUbD&amp;#13;&amp;#10;sX1IyxmEqiiLaMe0lIYpyqUm0Nb8ZFl0TjndNzZJFHNhAALMTqgOPyvDdlWyeYGGsbJKjeVbGks2&amp;#13;&amp;#10;yS7YAnAGoMNz8GrtWYc0DFkmRtqKk6Wx1AJsyW1FZYPuVUyEMSt1WazGFgvoyraiNk4RHyt7tH7G&amp;#13;&amp;#10;bQ151jyrKqdxlvNDXa4M2oUqLyXRIwZxFOg0486oGXeG2sx9LynpEO6Qq5t3eQT2Ml2JXPZuH340&amp;#13;&amp;#10;rEn48QFzAs1Qhv0C10UkUvAzmXjToa/VNy0ZpmlmHxTrOtLURqN/HbJIEwB2MPjJdOCbBiUnSXVM&amp;#13;&amp;#10;k1ixhgF7V1VdnEB3qFYyybDyktHoTRZJDJg5GbgQHHIzc1IWAcgwYBJ8BcLBHKVxcpeScMWwaXnh&amp;#13;&amp;#10;1APFTOJqlmt8A7cGIBFg22c4KTgrZk7534py6ELyd1ZKyvLh6gr5BmjDBbLlu0eudo9kq/QEYRAQ&amp;#13;&amp;#10;rIELiYLEEwGciBcsTwsqzrJ5AW4HdVOgrpebj5QX+mIJuMzv8/mSFkzOjj1UVWXlaNWYUKlflTyr&amp;#13;&amp;#10;R0R9IiHv7nHkb0meXejTJ/LsQp9ekWcXAvWKPLsQqFfk2YVAvSLPLgTqFXl2IVCvyLMLge5KnvUI&amp;#13;&amp;#10;xQDiTdJ052iV8r2wB8Hog+cjuWyZlJSpOEkYBbv/UCCCX19twxCn8t8hsFAICBEdPGu+EozPl9EN&amp;#13;&amp;#10;uUpW/IJCHM6fQKwMT4qBoO0bMMm9MUSWKn+wSBQt7p5VFlBdo0mxpCokEvjgSjZdUcWlSb49uXxX&amp;#13;&amp;#10;69d+uOSSs6sVgK0g7+YOKWIRLk9pGicyngeosKS8ZNBfGfkCtgE1JRQ9v0QOPKO3cC5J8vJUcAzK&amp;#13;&amp;#10;fAPbf4W0DcwdZntfaXYI0U3FZr6/Q+UH8H11wzyM78fNfC/9HDLGOwcXzN35nvAcruUQHH843+Q8&amp;#13;&amp;#10;1VHawPPdcSBDnYE7mow8qRp4QnSQ1huNcJY+Zto3fpw6pFnat7TvkHvEmavbtj6RLO2rD50u9LG0&amp;#13;&amp;#10;r1c2NKxTsLRvln40CGRpv0UgS/stAlnabxHI0n6LQJb2WwSytK+XOko8e1S0fwoRajK/LQVLLe0f&amp;#13;&amp;#10;jOZXZvHDaB+WSDctXp4obxas6L4f7e/wvWfWQ4FfRy1f3VvK7Jold7iS+3FG8z3j6dpdJGyj+Taa&amp;#13;&amp;#10;D14py/ffbZ199SD7ef4Py/eW72s7OO67UcPyfYttbfm+RSDL9y0CWb5vEcjyfYtAlu8fLd/PQx4X&amp;#13;&amp;#10;gpzzPGRlmXML+T8E8l1AlSbK12tWvoXycT2+3LPSRPme6/uywOOlfLOFow4fNopvo/iW8r/jbnpL&amp;#13;&amp;#10;+V/fQNSFPjaK32JAWspvEchSfotAlvJbBLKU3yKQpfwWgSzlP1rKl1H8GtrDgn6MEt9pjwTjsFcB&amp;#13;&amp;#10;NhnbvRL33StxQWHhBI8/s7pfBVbXNyRLsFtUdvZV33eLSiWq3Y1SpauogOZh61NcuPOV6wp3/rzK&amp;#13;&amp;#10;NwScWXKXlfZYEUxzAOk5zDaMKkNfKfOHmGx+24yC2wQS4K0ajnyZ8Uk2aPac1NakBCN3NJJ5LWCH&amp;#13;&amp;#10;UVOGia8m1oOkgTnmllPbZUynGpM01BMzVJkV8HlZFi8hbcZprLOV/PopEMTGXNa6X85uilCbIrrQ&amp;#13;&amp;#10;p0+LJrrQp1fulC4E6pU7pQuBeuVO6UKgXrlTuhCoV+6ULgTqlTulC4Ga3SlfIXeZ2bHKbnCI3KWl&amp;#13;&amp;#10;LZ6/jjkYzR95LNieY6DCqFrWaJU+oX4CZVHfadu/TI+mTGj8WUFCla/c9QxpfJnHGyhEdvzeUfLG&amp;#13;&amp;#10;ne9PIBPmEHa7Y567wIM0dl/sfJ9Mh488Zm6wqG6b25i5jZnbmLmNmf+0DP2Vi6n+IPqRToJeQV4X&amp;#13;&amp;#10;AvUK8roQqFeQ14VAvYK8LgTqFeR1IVCvIK8LgZohr55h3ea5Oy5/cp67t+rLxEry8vzvGiHbRHfm&amp;#13;&amp;#10;m5mqO+ZhoUUA8O26eIyryazjRG733ua4Uy6DM/gytZJk+Ql+uRR7yXl+g4ncIWW6CU9px4CM/FbO&amp;#13;&amp;#10;BQz2Hc543+gXcCfDQH6DCPgF4LuqfPR4SNeDiU4GkPDeJMTzht7Y/x8AAP//7JZRb5swEMe/iuXX&amp;#13;&amp;#10;qWqAkKRRqbRm6zQpmqLSas8XcIDVGGY7NO2n351xC+n6EeCFs+7P+e7HGW4245c315ewPh10fXMN&amp;#13;&amp;#10;61Yb+0M0NSMj4dlRdyK/r4rSftW6eeakgW5rLBlFzhTUIuGQ/wk4O9QSEt6BZFF0tYgo8rkmHGtW&amp;#13;&amp;#10;s3gR/6+JxpqILp+h3xVzfcuRwptGVvldJaVb6GK/kZphCgm/c5d/+EwmFXtO+FUcxq6cM58Zh5i5&amp;#13;&amp;#10;67MQdWWFZrKqE756F8G6FJB/V7kr3EIlextTlspRNu1OU6L2lLb9/bbJX8ja432HmQuN1MtGv3L2&amp;#13;&amp;#10;rKFNuPl7BC04kz+VwaSD+XzGmXWLebwMcaHHnv3Yo471pkEU+G5AZRg14fbN3Fhc4dNZU7dgtypt&amp;#13;&amp;#10;MxJSLsT34fQbdOu7wIqT/dWkJbRiaIC+bwatK7Avg4JIY1P7IgXZuTjs+sLRuscyJagi4UJdPKae&amp;#13;&amp;#10;7iCRnQwQE6tBb12GIAuVcMkZah5gn756DFS6xerwLmCrbvWTq1SCrZRfoqvErSpV7I4qQ7J9gT4L&amp;#13;&amp;#10;g5ECfH2cPQmNWwQh2pTveUdkpajFe1vZU/BZQ7hdmX1pxQEyPBFfanUhLSlhLeCDQ0DvyMwHR2YG&amp;#13;&amp;#10;HMjJIfU8HNNOhgMa9/ox+YkPQfF8ooGPOysTH+wfguL5zAc+QbQMFtT9UwMRFQ8oHgFahSv3eZgA&amp;#13;&amp;#10;ERUPaDEACsMVNtDUQXjEiIoHtBwBWs4j+qlMR0wSFQ9oNQAiOvMJ0Bo7iKh4QFcjQIt4OX2kcZzs&amp;#13;&amp;#10;JFHpJ6LRaOnGaKHyHWj4fLJEBQ7g9vQ2aR+NSNt7kdl+gO1HcVQYEspsLZvsSeQbUB0Y92iBc3hZ&amp;#13;&amp;#10;Zd/Awnh98w8AAP//AwBQSwMEFAAGAAgAAAAhAOFRNx/PBgAA5hsAABoAAABjbGlwYm9hcmQvdGhl&amp;#13;&amp;#10;bWUvdGhlbWUxLnhtbOxZzW/cRBS/I/E/jHxvs9/NRt1U2c1uA23aKNkW9Thrz9rTjD3WzGzSvaH2&amp;#13;&amp;#10;iISEKIgDlbhxQEClVuJS/ppAERSp/wJvZmyvJ+uQtI2gguaQtZ9/877fm6/LV+7FDB0QISlPel79&amp;#13;&amp;#10;Ys1DJPF5QJOw590ajy6sekgqnASY8YT0vDmR3pX199+7jNd8RtMJxyIYRyQmCBglcg33vEipdG1l&amp;#13;&amp;#10;RfpAxvIiT0kC36ZcxFjBqwhXAoEPQUDMVhq1WmclxjTx1oGj0oyGDP4lSmqCz8SeZkNQgmOQfnM6&amp;#13;&amp;#10;pT4x2GC/rhFyLgdMoAPMeh7wDPjhmNxTHmJYKvjQ82rmz1tZv7yC17JBTJ0wtjRuZP6ycdmAYL9h&amp;#13;&amp;#10;ZIpwUgitj1rdS5sFfwNgahk3HA4Hw3rBzwCw74OlVpcyz9Zotd7PeZZA9nGZ96DWrrVcfIl/c0nn&amp;#13;&amp;#10;br/fb3czXSxTA7KPrSX8aq3T2mg4eAOy+PYSvtXfGAw6Dt6ALL6zhB9d6nZaLt6AIkaT/SW0Duho&amp;#13;&amp;#10;lHEvIFPOtirhqwBfrWXwBQqyocguLWLKE3VSrsX4LhcjAGggw4omSM1TMsU+5OQAxxNBsRaA1wgu&amp;#13;&amp;#10;fbEkXy6RtCwkfUFT1fM+THHilSAvn33/8tkTdHT/6dH9n44ePDi6/6Nl5IzawklYHvXi28/+fPQx&amp;#13;&amp;#10;+uPJNy8eflGNl2X8rz988svPn1cDoXwW5j3/8vFvTx8//+rT3797WAHfEHhSho9pTCS6QQ7RLo/B&amp;#13;&amp;#10;MOMVV3MyEa82YhxhWh6xkYQSJ1hLqeA/VJGDvjHHLIuOo0efuB68LaB9VAGvzu46Cu9FYqZoheRr&amp;#13;&amp;#10;UewAtzlnfS4qvXBNyyq5eTxLwmrhYlbG7WJ8UCV7gBMnvsNZCn0zT0vH8EFEHDV3GE4UDklCFNLf&amp;#13;&amp;#10;+D4hFdbdodTx6zb1BZd8qtAdivqYVrpkTCdONi0GbdEY4jKvshni7fhm+zbqc1Zl9SY5cJFQFZhV&amp;#13;&amp;#10;KD8mzHHjVTxTOK5iOcYxKzv8OlZRlZJ7c+GXcUOpINIhYRwNAyJl1ZibAuwtBf0aho5VGfZtNo9d&amp;#13;&amp;#10;pFB0v4rndcx5GbnJ9wcRjtMq7B5NojL2A7kPKYrRDldV8G3uVoh+hzjg5MRw36bECffp3eAWDR2V&amp;#13;&amp;#10;Fgmiv8yEjiW0aqcDxzT5u3bMKPRjmwPn146hAT7/+lFFZr2tjXgD5qSqStg61n5Pwh1vugMuAvr2&amp;#13;&amp;#10;99xNPEt2CKT58sTzruW+a7nef77lnlTPZ220i94KbVevG+yi2CyR4xNXyFPK2J6aM3JdmkWyhHki&amp;#13;&amp;#10;GAFRjzM7QVLsmNIIHrO+7uBCgc0YJLj6iKpoL8IpLLDrnmYSyox1KFHKJWzsDLmSt8bDIl3ZbWFb&amp;#13;&amp;#10;bxhsP5BYbfPAkpuanO8LCjZmtgnN5jMX1NQMziqseSljCma/jrC6VurM0upGNdPqHGmFyRDDZdOA&amp;#13;&amp;#10;WHgTFiAIli3g5Q7sxbVo2JhgRgLtdzv35mExUTjPEMkIBySLkbZ7OUZ1E6Q8V8xJAORORYz0Ju8U&amp;#13;&amp;#10;r5WkdTXbN5B2liCVxbVOEJdH702ilGfwIkq6bo+VI0vKxckSdNjzuu1G20M+TnveFPa08BinEHWp&amp;#13;&amp;#10;13yYhXAa5Cth0/7UYjZVvohmNzfMLYI6HFNYvy8Z7PSBVEi1iWVkU8N8ylKAJVqS1b/RBreelwE2&amp;#13;&amp;#10;019Di+YqJMO/pgX40Q0tmU6Jr8rBLlG07+xr1kr5TBGxFwWHaMJmYhdD+HWqgj0BlXA0YTqCfoFz&amp;#13;&amp;#10;NO1t88ltzlnRlU+vDM7SMUsjnLVbXaJ5JVu4qeNCB/NWUg9sq9TdGPfqppiSPydTymn8PzNFzydw&amp;#13;&amp;#10;UtAMdAR8OJQVGOl67XlcqIhDF0oj6o8ELBxM74BsgbNY+AxJBSfI5leQA/1ra87yMGUNGz61S0Mk&amp;#13;&amp;#10;KMxHKhKE7EBbMtl3CrN6NndZlixjZDKqpK5MrdoTckDYWPfAjp7bPRRBqptukrUBgzuef+57VkGT&amp;#13;&amp;#10;UC9yyvXm9JBi7rU18E+vfGwxg1FuHzYLmtz/hYoVs6odb4bnc2/ZEP1hscxq5VUBwkpTQTcr+9dU&amp;#13;&amp;#10;4RWnWtuxlixutHPlIIrLFgOxWBClcN6D9D+Y/6jwmb1t0BPqmO9Cb0Vw0aCZQdpAVl+wCw+kG6Ql&amp;#13;&amp;#10;TmDhZIk2mTQr69ps6aS9lk/W57zSLeQec7bW7CzxfkVnF4szV5xTi+fp7MzDjq8t7URXQ2SPlyiQ&amp;#13;&amp;#10;pvlGxgSm6tZpG6doEtZ7Htz8QKDvwRPcHXlAa2haQ9PgCS6EYLFkb3F6XvaQU+C7pRSYZk5p5phW&amp;#13;&amp;#10;TmnllHZOgcVZdl+SUzrQqfQVB1yx6R8P5bcZsILLbj/ypupcza3/BQAA//8DAFBLAwQUAAYACAAA&amp;#13;&amp;#10;ACEAnGZGQbsAAAAkAQAAKgAAAGNsaXBib2FyZC9kcmF3aW5ncy9fcmVscy9kcmF3aW5nMS54bWwu&amp;#13;&amp;#10;cmVsc4SPzQrCMBCE74LvEPZu0noQkSa9iNCr1AcIyTYtNj8kUezbG+hFQfCyMLPsN7NN+7IzeWJM&amp;#13;&amp;#10;k3ccaloBQae8npzhcOsvuyOQlKXTcvYOOSyYoBXbTXPFWeZylMYpJFIoLnEYcw4nxpIa0cpEfUBX&amp;#13;&amp;#10;NoOPVuYio2FBqrs0yPZVdWDxkwHii0k6zSF2ugbSL6Ek/2f7YZgUnr16WHT5RwTLpRcWoIwGMwdK&amp;#13;&amp;#10;V2edNS1dgYmGff0m3gAAAP//AwBQSwECLQAUAAYACAAAACEAu+VIlAUBAAAeAgAAEwAAAAAAAAAA&amp;#13;&amp;#10;AAAAAAAAAAAAW0NvbnRlbnRfVHlwZXNdLnhtbFBLAQItABQABgAIAAAAIQCtMD/xwQAAADIBAAAL&amp;#13;&amp;#10;AAAAAAAAAAAAAAAAADYBAABfcmVscy8ucmVsc1BLAQItABQABgAIAAAAIQAdRHjDRgsAAO97AAAf&amp;#13;&amp;#10;AAAAAAAAAAAAAAAAACACAABjbGlwYm9hcmQvZHJhd2luZ3MvZHJhd2luZzEueG1sUEsBAi0AFAAG&amp;#13;&amp;#10;AAgAAAAhAOFRNx/PBgAA5hsAABoAAAAAAAAAAAAAAAAAow0AAGNsaXBib2FyZC90aGVtZS90aGVt&amp;#13;&amp;#10;ZTEueG1sUEsBAi0AFAAGAAgAAAAhAJxmRkG7AAAAJAEAACoAAAAAAAAAAAAAAAAAqhQAAGNsaXBi&amp;#13;&amp;#10;b2FyZC9kcmF3aW5ncy9fcmVscy9kcmF3aW5nMS54bWwucmVsc1BLBQYAAAAABQAFAGcBAACtFQAA&amp;#13;&amp;#10;AAA=&amp;#13;&amp;#10;" o:spid="_x0000_i1026"&gt;&lt;v:imagedata mce_src="file:///C:\Users\mlawrenc\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png" src="file:///C:\Users\mlawrenc\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png" o:title="" cropleft="-133f" cropbottom="-279f"&gt;&lt;/v:imagedata&gt;&lt;o:lock v:ext="edit" aspectratio="f"&gt;&lt;/o:lock&gt;&lt;/v:shape&gt;&lt;/SPAN&gt;&lt;SPAN style="TEXT-DECORATION: none; text-underline: none"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;H2 style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;SPAN style="TEXT-DECORATION: none"&gt;&lt;U&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/H2&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;IMG style="WIDTH: 631px; HEIGHT: 278px" title="Text separated from rendering" alt="Text separated from rendering" src="http://blogs.msdn.com/photos/directx/images/9938516/original.aspx" width=631 height=278 mce_src="http://blogs.msdn.com/photos/directx/images/9938516/original.aspx"&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;This separation is accomplished by allowing an application to implement a callback interface (&lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;IDWriteTextRenderer&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;) and then target a particular glyph rendering API to render the laid-out glyphs. For GDI, this would be &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;ExtTextOut&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;, for Direct2D &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;ID2D1RenderTarget::DrawGlyphRun&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; and for DirectWrite &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;IDWriteBitmapRenderTarget::DrawGlyphRun&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;. Conveniently, &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;DrawGlyphRun&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; in both Direct2D and DirectWrite have exactly compatible parameters to the &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;DrawGlyphRun&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; method that the application implements on &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;IDWriteTextRenderer&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Following a similar separation, text specific features such as font enumeration and management, glyph analysis, etc. are handled by DirectWrite rather than Direct2D. The DirectWrite objects are accepted directly by Direct2D. To help existing GDI applications to take advantage of DirectWrite, it provides the &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;IDWriteGDIInteropMethod&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; interface with methods to:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Create a DirectWrite Font from a GDI Logical Font (&lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;CreateFontFromLOGFONT&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Convert from a DirectWrite Font Face to a GDI Logical Font (&lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;ConvertFontFacetoLOGFONT&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Retrieve the Direct Write Font Face from the one currently selected into an HDC. (&lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;CreateFontFaceFromHDC&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Create a DirectWrite bitmap render target in system memory (&lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;CreateBitmapRenderTarget&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;SPAN style="TEXT-DECORATION: none"&gt;&lt;FONT size=3 face=Calibri&gt;&lt;U&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/H2&gt;
&lt;H1 style="MARGIN: 0in 0in 0pt"&gt;&lt;U&gt;&lt;FONT size=4&gt;&lt;FONT face=Calibri&gt;Glyphs versus Text&lt;SPAN style="TEXT-DECORATION: none; text-underline: none"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/H1&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Both Direct2D and DirectWrite have a very strict separation in the API between Text and Glyphs. Text is a set of Unicode code points (characters), with various stylistic modifiers (fonts, weights, underlines, strikethroughs etc.) that is laid out within a rectangle. A glyph, in contrast, is a particular index into a particular font file. A glyph defines a set of curves which can be rendered, but, it doesn’t have any textual meaning. There is potentially a many to many mapping between glyphs and characters. A sequence of glyphs that come from the same Font Face and that are laid-out sequentially on a baseline is called a GlyphRun. Both DirectWrite and Direct2D call their most precise glyph rendering API &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;DrawGlyphRun&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; and they have very similar signatures. We’ll show Direct2D’s:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=code&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;STDMETHOD_(void, DrawGlyphRun)(&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=code&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;D2D1_POINT_2F baselineOrigin,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=code&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;__in CONST DWRITE_GLYPH_RUN *glyphRun,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=code&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;__in ID2D1Brush *foregroundBrush,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=code&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;DWRITE_MEASURING_MODE measuringMode = DWRITE_MEASURING_MODE_NATURAL &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=code&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;) PURE;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Each glyph run starts at an origin and is placed on a line starting from this origin. The glyphs are modified by the current world transform and the selected text rendering settings on the associated render target. This API is generally called directly only by APIs that do their own layout (For example a Word Processor) or by an application that has implemented the &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;IDWriteTextRenderer&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; interface. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H1 style="MARGIN: 0in 0in 0pt"&gt;&lt;U&gt;&lt;FONT size=4&gt;&lt;FONT face=Calibri&gt;DirectWrite and Direct2D&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/H1&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Architecturally, it would be ideal for Direct2D and DirectWrite to have a clear distinction of roles. Direct2D would provide rendering services (&lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;DrawGlyphRun&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;) and DirectWrite would provide layout, fonts and other text services. However, during the design of Direct2D, we very quickly realized that asking an application to implement the text rendering interface to replace the equivalent of USER32’s &lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;DrawText&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; API would probably be too large a burden initially. Conversely, applications will want a way to do basic glyph rendering through DirectWrite without pulling in all of D2D. So, the relationship is a little more complex, and DirectWrite provides for glyph rendering through the &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;IDWriteBitmapRenderTarget::DrawGlyphRun&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; API. Similarly Direct2D provides some APIs that accept text rather than Glyphs through &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;ID2D1RenderTarget::DrawTextLayout&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; and &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;ID2D1RenderTarget::DrawText&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;. An application’s usage of text tends to start simple: put OK or Cancel on a fixed-layout button, for example.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;But, over time it becomes more complex as internationalization and other features are added. Eventually many applications will reach the point where using DirectWrite’s text layout objects and implementing the text renderer will become necessary.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;For this reason, Direct2D provides layered APIs that allow an application to start simply and grow more sophisticated without having to back-track or abandon their working code. A simplified view is shown below:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;IMG style="WIDTH: 774px; HEIGHT: 329px" title="DrawText migration" alt="DrawText migration" src="http://blogs.msdn.com/photos/directx/images/9938518/original.aspx" width=774 height=329 mce_src="http://blogs.msdn.com/photos/directx/images/9938518/original.aspx"&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;&lt;v:shape style="WIDTH: 579.75pt; HEIGHT: 246pt" id=_x0000_i1025 type="#_x0000_t75" o:ole=""&gt;&lt;v:imagedata mce_src="file:///C:\Users\mlawrenc\AppData\Local\Temp\msohtmlclip1\01\clip_image003.emz" src="file:///C:\Users\mlawrenc\AppData\Local\Temp\msohtmlclip1\01\clip_image003.emz" o:title=""&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt; 
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;DrawText &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;This is the simplest of the APIs to use. It takes a Unicode string, a foreground brush, a single format object and a destination rectangle. It will lay-out and render the entire string within the layout rectangle, and optionally clip it. This is useful when putting a simple piece of text within a piece of fixed-layout UI.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;DrawTextLayout&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;If the application would like to start measuring and arranging the text and other UI elements, or, if it wants to support multiple fonts, styles, underlines and strikethroughs; it can create a text layout object using DirectWrite. Direct2D provides the &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;DrawTextLayout&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; API that directly accepts this object and renders the text at a given point. (The width and height are provided by the layout object). As well as implementing all of the expected text layout features, Direct2D will interpret any effect object as a brush and apply that brush to the selected range of glyphs. It will also call any inline objects, which allows an application to insert non-glyph “characters” (icons) into the text if it wishes. Another advantage of using a text layout object is that the glyph positions are cached in it. Hence, there is a large performance gain to be had by reusing the same layout object for multiple draw calls and avoiding recalculating the glyph positions for each call. This capability is not present for USER32’s &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;DrawText&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;DrawGlyphRun&lt;/B&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;BR&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Finally, the application can implement the &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;IDWriteTextRenderer&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; interface themselves and call &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;DrawGlyphRun&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; and &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;FillRectangle&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; themselves (or any other rendering API). All of the existing interaction with the Text Layout object will remain unchanged.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H1 style="MARGIN: 0in 0in 0pt"&gt;&lt;U&gt;&lt;FONT size=4&gt;&lt;FONT face=Calibri&gt;Glyph Rendering in Direct2D versus DirectWrite&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/H1&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;DirectWrite allows an existing GDI application to obtain advanced text rendering features such as:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Sub-pixel ClearType. This allows an application to place glyphs on sub-pixel positions to allow for both sharp glyph rendering as well as even glyph layout.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Y-direction anti-aliasing. This allows smoother rendering of curves on larger glyphs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The application can obtain these without having to pull in other DirectX APIs through the &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;IDWriteBitmapRenderTarget&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; API. This allows glyphs to be rendered with a solid color to a memory DC. An application moving to Direct2D will also obtain the following features:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Hardware acceleration.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;The ability to fill text with an arbitrary brush. (Radial Gradients, Linear Gradients and Bitmaps).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;More support for layering and clipping through the &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;PushAxisAlignedClip&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;, &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;PushLayer&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; and &lt;/FONT&gt;&lt;SPAN class=codeChar&gt;&lt;FONT face="Courier New"&gt;CreateCompatibleRenderTarget&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; APIs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The ability to support Grayscale text rendering. This correctly populates the destination alpha channel according to both the text brush opacity and the anti-aliasing of the text.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;In order to efficiently support hardware acceleration, Direct2D uses a slightly different approximation to Gamma correction called “alpha correction”. This doesn’t require Direct2D to inspect the render target color pixel when rendering text. Although this could be done entirely on the GPU by reading from the render target to another texture, this would prevent Direct2D from batching its calls to Direct3D efficiently since a batch would not be able to span any render target read-back. (See &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/magazine/dd861344.aspx" mce_href="http://msdn.microsoft.com/en-us/magazine/dd861344.aspx"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;the MSDN article&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; by Kenny Kerr to obtain more information about Direct2D batching).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H1 style="MARGIN: 0in 0in 0pt"&gt;&lt;U&gt;&lt;FONT size=4&gt;&lt;FONT face=Calibri&gt;Conclusion&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/H1&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;We hope that this article helps you understand the differences and similarities between Direct2D and DirectWrite as well as the architectural motivations for providing these as separate technologies. For more information please see:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/dd370990.aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd370990.aspx"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;The Direct2D reference on MSDN&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/dd368038.aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd368038.aspx"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;The DirectWrite reference on MSDN&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9938514" width="1" height="1"&gt;</content><author><name>Mark Lawrence1</name><uri>http://blogs.msdn.com/Mark-Lawrence/ProfileUrlRedirect.ashx</uri></author><category term="Graphics" scheme="http://blogs.msdn.com/b/directx/archive/tags/Graphics/" /><category term="DirectX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectX/" /><category term="GDI+" scheme="http://blogs.msdn.com/b/directx/archive/tags/GDI_2B00_/" /><category term="GDI" scheme="http://blogs.msdn.com/b/directx/archive/tags/GDI/" /><category term="Direct2D" scheme="http://blogs.msdn.com/b/directx/archive/tags/Direct2D/" /><category term="DirectWrite" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectWrite/" /></entry><entry><title>Animated 2D Graphics for UI, Games, and Demos</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/12/12/animated-2d-graphics-for-ui-games-and-demos.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/12/12/animated-2d-graphics-for-ui-games-and-demos.aspx</id><published>2009-12-12T02:14:00Z</published><updated>2009-12-12T02:14:00Z</updated><content type="html">&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-STYLE: normal; COLOR: windowtext; FONT-SIZE: 13.5pt; FONT-WEIGHT: normal; mso-fareast-font-family: 'MS Mincho'; mso-bidi-font-family: Arial; mso-ascii-font-family: Cambria; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Cambria"&gt;&lt;FONT face=Cambria&gt;&lt;STRONG&gt;Introduction&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In this post, I present a sample animation framework that demonstrates how Direct2D and DirectWrite can be used in a wide variety of applications. This post is targeted at game developers and demoscene coders who want to take advantage of modern hardware-accelerated components.&lt;/P&gt;
&lt;P&gt;Direct2D was designed for applications that need graphics intensive operations and yet demand high performance and reliability; these applications include internet browsers, office applications, and graphics editors. But Direct2D’s applicability extends beyond these problem domains and well into the realms of games and art. &lt;/P&gt;
&lt;P&gt;Graphics sell games. Therefore, they need to be very fast and look great. Even though the majority of games are heavily 3D, there is also a large chunk of 2D graphics in games, particularly UI components and textures. Also games from some genres, such as puzzle, strategy, and educational games, mostly use 2D graphics. &lt;/P&gt;
&lt;P&gt;Then there is the “demoscene,” a competitive, computer arts subculture, where teams of amateur coders, musicians and graphics artists create demos, programs that include hard-to-code visual effects with graphics and synchronized music, much like music videos. 2D graphics in particular is a rising trend in demos in the last few years (see Masagin by Farbraush &amp;amp; Neuro or Metamorphosis by ASD for example)&lt;/P&gt;
&lt;P&gt;While differences remain among a graphical editor application such as Adobe Illustrator, a real time strategy game and a demoscene demo, they present some of the same challenges:&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;A continuous float 2D problem space: The focus can move to different sections of the space, zooming in and out.&lt;/LI&gt;
&lt;LI&gt;Lots of cool animations: Animations contain a lot of visual information and contribute to the flow and artistic composition of non interactive sequences in games (i.e. cut scenes) as well as all the game world and characters. Game UIs often make heavy use of animation.&lt;/LI&gt;
&lt;LI&gt;Interoperability with Direct3D: If you are creating a 3D game, the chances are that you’ve already been using&amp;nbsp; Direct3D. Therefore it is crucial that what you do with your 2D API works nicely with Direct3D. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Direct2D is really great for addressing these issues. All drawings in Direct2D happen in a continuous float space, with the ability to apply transformation matrices with a few lines of code. Direct2D also gives you a lot of power for rich animation by providing very fast animation methods for transforms and by minimizing graphics bus traffic with the use of mesh and mask capabilities. Direct2D is further designed to interoperate well with Direct3D. By using Direct2D, you can directly render into Direct3D textures and use those textures to wrap your 3D models. For more information about Direct2D, see &lt;A href="http://msdn.microsoft.com/en-us/library/dd370990(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd370990(VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/dd370990(VS.85).aspx&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-STYLE: normal; COLOR: windowtext; FONT-SIZE: 13.5pt; FONT-WEIGHT: normal; mso-fareast-font-family: 'MS Mincho'; mso-bidi-font-family: Arial; mso-ascii-font-family: Cambria; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Cambria"&gt;&lt;FONT face=Cambria&gt;&lt;STRONG&gt;The Graphimation Framework Basics&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;During the development of Direct2D, I had the opportunity to actually apply some of these ideas to a prototype scenario. Once I recognized the value Direct2D has for the mentioned application spaces, I decided to design an animated 2D graphics framework in native C++, called the Graphimation Framework. I then used the framework to create three applications to showcase what you can do with the framework.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Direct2D Demo: A non-interactive demoscene-style demo.&lt;/LI&gt;
&lt;LI&gt;Carousel: A modern animated UI prototype that has arbitrarily-shaped widgets.&lt;/LI&gt;
&lt;LI&gt;D2DRTS: A simple real time strategy game.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;With the ease of use and direct applicability that Direct2D possesses, I was able to implement these applications in about 4 weeks.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Disclaimer&lt;/STRONG&gt;: All the code and documentation for Graphimation Framework is provided to the developer community as an example and is not an official Microsoft product. You can access the download at: &lt;A href="http://code.msdn.microsoft.com/graphimation"&gt;http://code.msdn.microsoft.com/graphimation&lt;/A&gt;&lt;/P&gt;&lt;STRONG&gt;
&lt;H3 style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; COLOR: black; FONT-SIZE: 12pt; mso-ascii-font-family: Cambria; mso-hansi-font-family: Cambria"&gt;&lt;FONT face=Cambria&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-STYLE: normal; COLOR: windowtext; FONT-SIZE: 13.5pt; FONT-WEIGHT: normal; mso-fareast-font-family: 'MS Mincho'; mso-bidi-font-family: Arial; mso-ascii-font-family: Cambria; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Cambria"&gt;&lt;FONT face=Cambria&gt;&lt;STRONG&gt;Graphimation Framework&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/H3&gt;&lt;/STRONG&gt;
&lt;P&gt;Let’s take a closer look at what the Graphimation Framework provides.&amp;nbsp; It provides an interface called IGraphimation. This interface encapsulates a graphics object that can be rendered and includes some animations. It can also provide some named variables that its client can set to customize certain aspects of the graphimation object. You can also hit test against a graphimation.&lt;/P&gt;
&lt;P&gt;A graphimation object is defined and initialized by an external file (a .d2g file). Once a graphimation object is initialized, you need to call render() on it from your render function, and update() it with time passed between each invocation of the main loop. &lt;/P&gt;
&lt;P&gt;Each graphimation object (for example, a soldier in the RTS game) defines one or more animations. Through the render + update mechanics, each animation automatically keeps playing. Animations can also loop or tie into other animations. All this is automatically handled by the Graphimation Framework. The client can switch any animation.&amp;nbsp; For example, to make a soldier walk, the application calls PlayAnimation(“walk”).&lt;/P&gt;
&lt;P&gt;If you want to see more information about how to create and use graphimations, see the GraphimationFrameworkManual.docx file in the Doc folder in the sources. It provides information about the internal workings of the framework.&lt;/P&gt;&lt;STRONG&gt;
&lt;H3 style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; COLOR: black; FONT-SIZE: 12pt; mso-ascii-font-family: Cambria; mso-hansi-font-family: Cambria"&gt;&lt;FONT face=Cambria&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-STYLE: normal; COLOR: windowtext; FONT-SIZE: 13.5pt; FONT-WEIGHT: normal; mso-fareast-font-family: 'MS Mincho'; mso-bidi-font-family: Arial; mso-ascii-font-family: Cambria; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Cambria"&gt;&lt;FONT face=Cambria&gt;&lt;STRONG&gt;.d2g files&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/H3&gt;&lt;/STRONG&gt;
&lt;P&gt;All the graphics and animations are defined in the d2g files. A d2g file defines the following:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Resources, such as geometries, brushes, and transforms.&lt;/LI&gt;
&lt;LI&gt;Render functions, such as Fill, Stroke, and PushTransform.&lt;/LI&gt;
&lt;LI&gt;Controllers that can be bound to variables, such as linear and sinusoidal.&lt;/LI&gt;
&lt;LI&gt;Named animations, such as&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;a render function that refers to resources to render stuff,&lt;/LI&gt;
&lt;LI&gt;and a main controller (that can include other controllers) tied to variables which cause the “change” in animations. &lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P&gt;In a d2g file, you can put a variable name almost anywhere that you can write a constant number. These variables can then either be set from outside the framework by the SetVariable interface or internally controlled by a controller. &lt;/P&gt;
&lt;P&gt;A graphimation object can also contain other graphimation objects as resources and render or update them. Therefore whole hierarchies of graphimation objects can be built and easily controlled. In fact, the entire Direct2D Demo is a single graphimation object that includes many others (like the fish, the plants, and the butterfly). Check out the manual for advanced techniques in using graphimations. Also please refer to the manual for further info on the d2g file syntax.&lt;/P&gt;&lt;STRONG&gt;
&lt;H3 style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; COLOR: black; FONT-SIZE: 12pt; mso-ascii-font-family: Cambria; mso-hansi-font-family: Cambria"&gt;&lt;FONT face=Cambria&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-STYLE: normal; COLOR: windowtext; FONT-SIZE: 13.5pt; FONT-WEIGHT: normal; mso-fareast-font-family: 'MS Mincho'; mso-bidi-font-family: Arial; mso-ascii-font-family: Cambria; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Cambria"&gt;&lt;FONT face=Cambria&gt;&lt;STRONG&gt;Framework Library Dependencies and Implementation Details&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/H3&gt;&lt;/STRONG&gt;
&lt;P&gt;Implementing this framework was very easy with Direct2D and took only about two-dev weeks. A large portion of the code is for parsing the d2g files. Since Direct2D maps to this problem so well, the rest of the code is just simple wrapper classes around Direct2D classes with ten – twenty lines of code each.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 115%; COLOR: black; FONT-SIZE: 12pt; mso-ascii-font-family: Cambria; mso-hansi-font-family: Cambria"&gt;&lt;FONT face=Cambria&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-STYLE: normal; COLOR: windowtext; FONT-SIZE: 13.5pt; FONT-WEIGHT: normal; mso-fareast-font-family: 'MS Mincho'; mso-bidi-font-family: Arial; mso-ascii-font-family: Cambria; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Cambria"&gt;&lt;FONT face=Cambria&gt;&lt;STRONG&gt;Library Dependencies&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/STRONG&gt;
&lt;P&gt;Graphimation Framework depends pretty heavily on STL and Boost. The Graphimation Framework only needs the headers from the Boost libraries, so you only need to download Boost—you don’t have to build it. You do need to add the Boost path to your include path in Visual Studio. &lt;/P&gt;
&lt;P&gt;You also need the Windows 7 SDK, which is available at &lt;A href="http://msdn.microsoft.com/en-us/windows/bb980924.aspx" mce_href="http://msdn.microsoft.com/en-us/windows/bb980924.aspx"&gt;http://msdn.microsoft.com/en-us/windows/bb980924.aspx&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;As Graphimation is provided as a Visual C++2008 project, you also need a version of Visual Studio 2008. The free express one from &lt;A href="http://www.microsoft.com/exPress/" mce_href="http://www.microsoft.com/exPress/"&gt;http://www.microsoft.com/exPress/&lt;/A&gt; will do.&lt;/P&gt;&lt;STRONG&gt;
&lt;H3 style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; COLOR: black; FONT-SIZE: 12pt; mso-ascii-font-family: Cambria; mso-hansi-font-family: Cambria"&gt;&lt;FONT face=Cambria&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-STYLE: normal; COLOR: windowtext; FONT-SIZE: 13.5pt; FONT-WEIGHT: normal; mso-fareast-font-family: 'MS Mincho'; mso-bidi-font-family: Arial; mso-ascii-font-family: Cambria; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Cambria"&gt;&lt;FONT face=Cambria&gt;&lt;STRONG&gt;Implementation Details and Class Diagrams&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/H3&gt;&lt;/STRONG&gt;
&lt;P&gt;Throughout the framework the RAII concept is used to control all the resources, so the framework satisfies the “basic exception safety” guarantee that no resources will be leaked on the face of exceptions (which may happen due to STL, Boost, or new -- GXM also converts D2D errors into exceptions too). However, the framework does NOT provide “strong exception safety,” meaning that, in the case of an exception, the object may not be in a usable state. Finally, any exceptions thrown from Boost or STL are caught at the module boundary and converted to error codes. Therefore, the client code does not see any exceptions.&lt;/P&gt;
&lt;P&gt;The following diagram shows a group of main classes and their relationships.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 511px; HEIGHT: 419px" title="uml diagram" alt="uml diagram" align=middle src="http://blogs.msdn.com/photos/directx/images/9928848/original.aspx" width=511 height=419 mce_src="http://blogs.msdn.com/photos/directx/images/9928848/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 115%; COLOR: black; FONT-SIZE: 12pt; mso-ascii-font-family: Cambria; mso-hansi-font-family: Cambria"&gt;&lt;FONT face=Cambria&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-STYLE: normal; COLOR: windowtext; FONT-SIZE: 13.5pt; FONT-WEIGHT: normal; mso-fareast-font-family: 'MS Mincho'; mso-bidi-font-family: Arial; mso-ascii-font-family: Cambria; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Cambria"&gt;&lt;FONT face=Cambria&gt;&lt;STRONG&gt;Samples Using the Graphimation Framework&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/STRONG&gt;
&lt;P&gt;Here I describe three samples that use the Graphimation Framework:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Direct2D Demo: a non-interactive demoscene style demo.&lt;/LI&gt;
&lt;LI&gt;Carousel: a modern animated UI prototype that has arbitrarily-shaped widgets.&lt;/LI&gt;
&lt;LI&gt;D2DRTS: a 2D real-time strategy game prototype.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 115%; COLOR: black; FONT-SIZE: 12pt; mso-ascii-font-family: Cambria; mso-hansi-font-family: Cambria"&gt;&lt;FONT face=Cambria&gt;The Direct2D Demo&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/STRONG&gt;
&lt;P&gt;By using the framework, I implemented a simple player that can play a .d2g file, and then created a set of nested .d2g files that made up a demoscene style demo. You can see what is shown in the following screen shot by running the demo.bat file in the GxmPlayer sources. &lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 403px; HEIGHT: 301px" title="D2D demo" alt="D2D demo" src="http://blogs.msdn.com/photos/directx/images/9928851/original.aspx" width=403 height=301 mce_src="http://blogs.msdn.com/photos/directx/images/9928851/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style="LINE-HEIGHT: 115%; COLOR: black; FONT-SIZE: 12pt; mso-ascii-font-family: Cambria; mso-hansi-font-family: Cambria"&gt;&lt;FONT face=Cambria&gt;Carousel Widget Library&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;By using this framework, I implemented an animated UI framework prototype called Carousel with only a few hundred lines of code. Simply each widget has a corresponding Graphimation object that can be animated in different ways. For example, the following screen shot shows several parent and child widgets,&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 378px; HEIGHT: 347px" title="Carousel Demo" alt="Carousel Demo" src="http://blogs.msdn.com/photos/directx/images/9928852/original.aspx" width=378 height=347 mce_src="http://blogs.msdn.com/photos/directx/images/9928852/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;When a parent widget is clicked, child widget graphimations simply play an animation (they “open up” around their parent). The idea was providing menu navigation with minimum distance of mouse movement. All options in a menu are at a small distance from where your mouse is, thanks to the circular structure of the menus. Another interesting point is that, since Direct2D provides hit testing with arbitrary geometries, your widgets do not have to be rectangular. The Graphimation Framework provides hit testing for any sub resources it contains. &lt;/P&gt;&lt;STRONG&gt;
&lt;H3 style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; COLOR: black; FONT-SIZE: 12pt; mso-ascii-font-family: Cambria; mso-hansi-font-family: Cambria"&gt;&lt;FONT face=Cambria&gt;D2DRTS - A 2D Real Time Strategy Game Prototype&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Writing a simple RTS game became a lot easier with the&amp;nbsp; Graphimation Framework. As mentioned before, the soldiers are instances of the same graphimation type (i.e. the same .d2g file). They support a set of animations (stand, walk, fight, die etc.) and once all the graphical concerns are handled by the Graphimation Framework, the remaining game code is greatly simplified. In the example shown in the following screen shot, all I did was to implement a few classes for the game world, soldier and AI, and it only took a few hundred lines!&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 498px; HEIGHT: 372px" title="D2D RTS" alt="D2D RTS" src="http://blogs.msdn.com/photos/directx/images/9928853/original.aspx" width=498 height=372 mce_src="http://blogs.msdn.com/photos/directx/images/9928853/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=4 face=Cambria&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;FONT size=4 face=Cambria&gt;Conclusions&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Of course a real UI framework, a real game, or a real demoscene demo will need to be more complex, but these examples help show how easy it can be to build a 2D graphic animation framework with Direct2D and be able to reuse it in a variety of cool applications.&lt;/P&gt;
&lt;P&gt;In summary, this blog post provided a perspective on the applicability of Direct2D on certain sets of applications. A set that is not necessarily the one that comes to mind when speaking of Direct2D. Irrespective of which industry you develop software for, if your problem domain includes issues like “animated 2D graphics” and “a continuous 2D float coordinate space”, then you might enjoy a number of benefits from using Direct2D.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Bilgem Cakir, Direct2D Team&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9935987" width="1" height="1"&gt;</content><author><name>Aisha Ayoub</name><uri>http://blogs.msdn.com/Aisha-Ayoub/ProfileUrlRedirect.ashx</uri></author><category term="Direct2D" scheme="http://blogs.msdn.com/b/directx/archive/tags/Direct2D/" /><category term="DirectWrite" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectWrite/" /><category term="Animation" scheme="http://blogs.msdn.com/b/directx/archive/tags/Animation/" /><category term="Games" scheme="http://blogs.msdn.com/b/directx/archive/tags/Games/" /><category term="Demoscene" scheme="http://blogs.msdn.com/b/directx/archive/tags/Demoscene/" /></entry><entry><title>Talks from PDC 2009 now available!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/11/25/talks-from-pdc-2009-now-available.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/11/25/talks-from-pdc-2009-now-available.aspx</id><published>2009-11-25T20:00:00Z</published><updated>2009-11-25T20:00:00Z</updated><content type="html">&lt;P style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;A href="http://microsoftpdc.com/" mce_href="http://microsoftpdc.com/"&gt;&lt;FONT color=#0000ff size=3 face="Times New Roman"&gt;PDC&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face="Times New Roman"&gt; this year had two sessions on DirectX technologies.&amp;nbsp; If you attended them: thank you!&amp;nbsp; For those who weren’t able to attend, the good news is that the sessions are now available online for viewing.&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;FONT size=3 face="Times New Roman"&gt;“&lt;/FONT&gt;&lt;A href="http://microsoftpdc.com/Sessions/CL14" mce_href="http://microsoftpdc.com/Sessions/CL14"&gt;&lt;FONT color=#0000ff size=3 face="Times New Roman"&gt;Advanced Graphics Functionality Using DirectX”&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face="Times New Roman"&gt; is about Direct2D and DirectWrite, and builds atop last year’s &lt;/FONT&gt;&lt;A href="http://channel9.msdn.com/pdc2008/PC18/" mce_href="http://channel9.msdn.com/pdc2008/PC18/"&gt;&lt;FONT color=#0000ff size=3 face="Times New Roman"&gt;“Introducing Direct2D and DirectWrite”&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face="Times New Roman"&gt; PDC talk.&amp;nbsp; The second is &lt;/FONT&gt;&lt;A href="http://microsoftpdc.com/Sessions/CL15" mce_href="http://microsoftpdc.com/Sessions/CL15"&gt;&lt;FONT color=#0000ff size=3 face="Times New Roman"&gt;“Modern 3D Graphics Using Windows 7 and Direct3D 11 Hardware”&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face="Times New Roman"&gt;, and is about Direct3D 11, WARP, and Direct3D 10 Level 9. &lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;FONT size=3 face="Times New Roman"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;FONT size=3 face="Times New Roman"&gt;As always, we appreciate comments and suggestions for future blog posts.&lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9928859" width="1" height="1"&gt;</content><author><name>Aisha Ayoub</name><uri>http://blogs.msdn.com/Aisha-Ayoub/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Internet Explorer announces to use DirectWrite &amp; Direct2D!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/11/18/internet-explorer-announces-to-use-directwrite-direct2d.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/11/18/internet-explorer-announces-to-use-directwrite-direct2d.aspx</id><published>2009-11-18T15:00:00Z</published><updated>2009-11-18T15:00:00Z</updated><content type="html">&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;Today, the Internet Explorer (IE) team announced they will be using DirectWrite and Direct2D for IE9!&amp;nbsp; Channel 9 takes us through to the halls of IE team, and shows a sneak peek at what they have in store for &lt;A href="http://channel9.msdn.com/posts/Charles/IE-9-Surfing-on-the-GPU-with-D2D/"&gt;&lt;SPAN style="COLOR: blue; mso-bidi-font-size: 11.0pt"&gt;IE9&lt;/SPAN&gt;&lt;/A&gt;.&amp;nbsp;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;Update: check out the &lt;A href="http://blogs.msdn.com/ie/archive/2009/11/18/an-early-look-at-ie9-for-developers.aspx"&gt;&lt;SPAN style="COLOR: blue; mso-bidi-font-size: 11.0pt"&gt;IE team blog&lt;/SPAN&gt;&lt;/A&gt; for their post on this announcement!&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9924833" width="1" height="1"&gt;</content><author><name>Aisha Ayoub</name><uri>http://blogs.msdn.com/Aisha-Ayoub/ProfileUrlRedirect.ashx</uri></author><category term="DX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DX/" /><category term="Graphics" scheme="http://blogs.msdn.com/b/directx/archive/tags/Graphics/" /><category term="GDI" scheme="http://blogs.msdn.com/b/directx/archive/tags/GDI/" /><category term="Direct2D" scheme="http://blogs.msdn.com/b/directx/archive/tags/Direct2D/" /><category term="DirectWrite" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectWrite/" /></entry><entry><title>Working Around Problems in ID2D1Bitmap's CopyFromBitmap and CopyFromRenderTarget</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/11/17/working-around-problems-in-id2d1bitmap-s-copyfrombitmap-and-copyfromrendertarget.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/11/17/working-around-problems-in-id2d1bitmap-s-copyfrombitmap-and-copyfromrendertarget.aspx</id><published>2009-11-17T14:50:00Z</published><updated>2009-11-17T14:50:00Z</updated><content type="html">&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Developers using the ID2D1Bitmap::CopyFromBitmap and ID2D1Bitmap::CopyFromRenderTarget APIs may notice problems when the source and destination rectangles are of different sizes. In particular, the source rectangle is incorrectly clipped against the destination bounds (instead of against the source bounds). The destination rectangle is correctly clipped against the destination bounds.&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Terminology: &lt;/FONT&gt;&lt;FONT size=3 face=Calibri&gt;Since the problem in each API is very similar, it is helpful to talk about both problems at the same time. However, in order to do that, we need a common word to refer to either a bitmap or a render target. This post will use the term “Surface”.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;There are two possible manifestations of this problem:&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoPlainText&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l1 level1 lfo1" class=MsoPlainText&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;1.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;Access violation (crash)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.25in" class=MsoPlainText&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;This happens when you pass a source rectangle that exceeds the bounds of the source surface but the destination surface is smaller than the source surface. The clipping will be insufficient and may result in a crash. In this case applications can work around this problem by sanitizing their inputs – don’t pass source rectangles that exceed the bounds of the source surface.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoPlainText&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l1 level1 lfo1" class=MsoPlainText&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;2.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;Over-clipping&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.25in" class=MsoPlainText&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;This happens when you pass a source rectangle that doesn’t exceed the bounds of the source surface but does exceed the bounds of the destination surface. The clipping will be overly zealous and less data will be copied than requested. In this case there are three possible workarounds:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoPlainText&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.75in; mso-list: l0 level1 lfo2" class=MsoPlainText&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;a)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;Use D3D&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoPlainText&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;Since the problem is in D2D customers using D3D and D2D together can call the corresponding APIs on the D3D interfaces. This is the option with the best performance, but it may be cumbersome to code in some scenarios. It requires that all associated D2D bitmaps to have been created with ID2D1RenderTarget::CreateSharedBitmap (IDXGISurface variant) and all associated D2D render targets to have been created with ID2D1Factory::CreateDxgiSurfaceRenderTarget. For example:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;IDXGISurface *pSurface;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;ID2D1Factory *pFactory;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;…&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;ID2D1RenderTarget *pRenderTarget = NULL;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;if (SUCCEEDED(pFactory-&amp;gt;CreateDxgiSurfaceRenderTarget(&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pSurface,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D2D1::RenderTargetProperties(&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D2D1_RENDER_TARGET_TYPE_DEFAULT,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D2D1::PixelFormat(&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DXGI_FORMAT_UNKNOWN,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D2D1_ALPHA_MODE_PREMULTIPLIED))&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;pRenderTarget))&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &amp;lt;Snip&amp;gt; Your render target code goes here.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;ID2D1Bitmap *pBitmap = NULL;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;if (SUCCEEDED(pRenderTarget-&amp;gt;CreateSharedBitmap(&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __uuidof(IDXGISurface),&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pSurface,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D2D1::BitmapProperties(&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D2D1::PixelFormat(&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DXGI_FORMAT_UNKNOWN,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D2D1_ALPHA_MODE_PREMULTIPLIED)),&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;pBitmap))&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &amp;lt;Snip&amp;gt; Your DXGI surface manipulation code goes here.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pBitmap-&amp;gt;Release();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pRenderTarget-&amp;gt;Release();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: #4f81bd"&gt;&lt;FONT size=3&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoPlainText&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoPlainText&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;These two APIs create D2D objects that wrap D3D textures. An application can hold on to the underlying D3D textures and call the ID3D10Device::CopySubresourceRegion API instead of the ID3D1Bitmap::CopyFromBitmap/ID2D1Bitmap::CopyFromRenderTarget APIs. If you choose this route, make sure you call EndDraw on all associated render targets first (including render targets against which drawing operations involving the bitmaps have been issued).&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoPlainText&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.75in; mso-list: l0 level1 lfo2" class=MsoPlainText&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;b)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;Use an intermediate bitmap&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoPlainText&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;This option is flexible, but it is costly from a performance standpoint (in terms of both memory footprint and speed). If you are attempting to copy from an ID2D1HwndRenderTarget, this is your only option. Create an intermediate bitmap the same size as the source surface. Call CopyFromBitmap / CopyFromRenderTarget to copy the desired region to the upper-left corner of the intermediate bitmap. Then copy from the upper-left corner of the intermediate bitmap to the destination. Even though this requires copying between surfaces of different sizes as the final step, this copy is from the upper-left corner, which ensures that the source rectangle will be within the destination bounds, so it will not be affected by the clipping.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoPlainText&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.75in; mso-list: l0 level1 lfo2" class=MsoPlainText&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;c)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;Use a DrawBitmap call instead of CopyFromBitmap/CopyFromRenderTarget&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoPlainText&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;This option is not as flexible as option 2, but in some cases it will be less costly from a performance standpoint. The DrawBitmap API allows you to specify both a source and a destination rectangle so you can use it instead of CopyFromBitmap/CopyFromRenderTarget, provided that the destination is a render target and that the source is a bitmap. You can create a surface that is both a render target and a bitmap using the ID2D1RenderTarget::CreateCompatibleRenderTarget API. You will not be able to use this option if you wish to copy from an ID2D1HwndRenderTarget. It is not possible to create a surface that is both an ID2D1HwndRenderTarget and an ID2D1Bitmap.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 12pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;We know that these workarounds are inconvenient to our customers. We hope that by sharing this information we help to minimize this inconvenience.&lt;/SPAN&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9914279" width="1" height="1"&gt;</content><author><name>Tom_Mulcahy</name><uri>http://blogs.msdn.com/Tom_5F00_Mulcahy/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Windows Imaging Component: Working with Images in Windows</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/11/13/test.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/11/13/test.aspx</id><published>2009-11-13T00:22:00Z</published><updated>2009-11-13T00:22:00Z</updated><content type="html">&lt;FONT color=#17365d size=7&gt;&lt;FONT color=#17365d size=7&gt;
&lt;H4 style="MARGIN: 10pt 0in 0pt"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-STYLE: normal; COLOR: windowtext; FONT-SIZE: 13.5pt; FONT-WEIGHT: normal; mso-bidi-font-family: Arial; mso-fareast-font-family: 'MS Mincho'; mso-ascii-font-family: Cambria; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Cambria"&gt;&lt;FONT face=Cambria&gt;&lt;STRONG&gt;What is it?&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/H4&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;B&gt;&lt;I&gt;&lt;FONT color=#4f81bd size=3&gt;&lt;FONT color=#4f81bd size=3&gt;&lt;/B&gt;&lt;/I&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=3 face=Calibri&gt;&lt;FONT size=3 face=Calibri&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/dd319236(VS.85).aspx"&gt;&lt;U&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;Windows Imaging Component (WIC) API&lt;/U&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;&lt;FONT size=3 face=Calibri&gt; enables applications to work with all common image formats. It allows developers to not have to understand intricate details of the image formats they work with. WIC has built-in support for popular formats such as JPEG, PNG, TIFF, and GIF as well as an extensibility model so that developers can create their own WIC decoder and encoder (CODEC) and get platform level support for their image format. WIC is available on Windows XP (SP2 and greater), Windows Vista, Windows Server, and Windows 7. &lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;I&gt;&lt;FONT color=#4f81bd size=3&gt;&lt;FONT color=#4f81bd size=3&gt;
&lt;H4 style="MARGIN: 10pt 0in 0pt"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-STYLE: normal; COLOR: windowtext; FONT-SIZE: 13.5pt; FONT-WEIGHT: normal; mso-bidi-font-family: Arial; mso-fareast-font-family: 'MS Mincho'; mso-ascii-font-family: Cambria; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Cambria"&gt;&lt;FONT face=Cambria&gt;&lt;STRONG&gt;Why is it useful?&lt;o:p&gt;&lt;/o:p&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/H4&gt;&lt;/I&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=3 face=Calibri&gt;&lt;FONT size=3 face=Calibri&gt;
&lt;P&gt;WIC is designed to handle any scenario that requires decoding or encoding an image. WIC has been widely adopted by developers inside and outside of Microsoft in their applications. The key benefits for using WIC are: &lt;/P&gt;
&lt;P&gt;1) Fast performing CODECs – WIC has been extensively tested and tuned to provide the fastest imaging CODECs on Windows. &lt;/P&gt;
&lt;P&gt;2) Extensive format and CODEC functionality support –WIC supports all major image formats in box and provides an extensibility model for additional formats. WIC also supports common image manipulation operations such as image rotation, scaling, cropping, and pixel format conversion.&lt;/P&gt;
&lt;P&gt;3) Security Testing – WIC has also been thoroughly testedto be secure against malformed image data. Furthermore, since WIC is a core Windows component, it is updated as necessary to be compliant with the latest standard and security requirements.&lt;/P&gt;
&lt;P&gt;4) Interoperation with modern DirectX APIs such as Direct2D and the Windows Color System - Direct2D provides APIs that can consume WIC objects for rendering and encoding images, this makes using WIC with D2D very easy. The Windows Color System has similar APIs available.&lt;/P&gt;
&lt;P&gt;Because of these features, WIC is used in a variety of applications. Also GDI+ in Windows 7 uses WIC CODECs to work with images. Since a large number of applications use WIC, a consistent experience working with image formats is available for Windows Applications. For example, the chances of CODEC incompatibility issues occurring between applications that use WIC to encode and decode images are small.&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;I&gt;&lt;FONT color=#4f81bd size=3&gt;&lt;FONT color=#4f81bd size=3&gt;
&lt;H4 style="MARGIN: 10pt 0in 0pt"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-STYLE: normal; COLOR: windowtext; FONT-SIZE: 13.5pt; FONT-WEIGHT: normal; mso-bidi-font-family: Arial; mso-fareast-font-family: 'MS Mincho'; mso-ascii-font-family: Cambria; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Cambria"&gt;&lt;FONT face=Cambria&gt;&lt;STRONG&gt;How to use it?&lt;o:p&gt;&lt;/o:p&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/H4&gt;&lt;/I&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=3 face=Calibri&gt;&lt;FONT size=3 face=Calibri&gt;
&lt;P&gt;Full documentation for WIC is available in Windows SDK and on &lt;/FONT&gt;&lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/dd319236(VS.85).aspx"&gt;&lt;U&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;MSDN&lt;/U&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;&lt;FONT size=3 face=Calibri&gt;. Links to relevant information are provided below. The &lt;/FONT&gt;&lt;/FONT&gt;&lt;A href="http://code.msdn.microsoft.com/win7wicsamples"&gt;&lt;U&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;code samples&lt;/U&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;&lt;FONT size=3 face=Calibri&gt; are a good starting point for learning how to use WIC and for accomplishing common tasks such as decoding, encoding, and reading metadata from images. &lt;/P&gt;
&lt;P&gt;An important developer tool for using WIC is WIC Explorer which is a light weight application that exposes all the functionality available in WIC. The source code and binaries for WIC Explorer are available &lt;/FONT&gt;&lt;/FONT&gt;&lt;A href="http://code.msdn.microsoft.com/wictools/Release/ProjectReleases.aspx?ReleaseId=2887"&gt;&lt;U&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;here&lt;/U&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;&lt;FONT size=3 face=Calibri&gt;. WIC Explorer exposes all available CODECs and metadata handlers installed on a system, and allows developers to see all available data in an image such as thumbnails, metadata, and actual image pixels. A screen shot of WIC Explorer is available in Figure 1 and 2. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3 face=Calibri&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Calibri&gt;&lt;FONT face=Calibri&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;IMG style="WIDTH: 759px; HEIGHT: 368px" src="http://blogs.msdn.com/photos/directx/images/9922208/original.aspx" width=759 height=368 mce_src="http://blogs.msdn.com/photos/directx/images/9922208/original.aspx"&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;FONT size=3&gt;Figure 1: Image Parameters displayed via WIC Explorer &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal mce_keep="true"&gt;&lt;IMG style="WIDTH: 748px; HEIGHT: 346px" src="http://blogs.msdn.com/photos/directx/images/9922209/original.aspx" width=748 height=346 mce_src="http://blogs.msdn.com/photos/directx/images/9922209/original.aspx"&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;Figure 2: Creation code for reading metadata from an image. This information is located below the image bits shown in Figure 1. &lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;WIC Explorer is also useful for testing images and determining whether they are compliant with standards and WIC CODECs. WIC Explorer also provides reference implementation of an actual application that uses WIC. The image creation code, which is located below the image in the right pane, provides code that can be run to expose functionality, such as metadata extraction. This tool is useful for any developer that wishes to use the WIC API. &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;Another useful tool for developers looking to create their own WIC CODEC is WIC COP, which is available &lt;A href="http://code.msdn.microsoft.com/wictools/Release/ProjectReleases.aspx?ReleaseId=2887"&gt;&lt;FONT color=#0000ff&gt;here&lt;/FONT&gt;&lt;/A&gt;. Documentation on how to create a WIC CODEC is available &lt;A href="http://msdn.microsoft.com/en-us/library/cc956175(VS.85).aspx"&gt;&lt;FONT color=#0000ff&gt;here&lt;/FONT&gt;&lt;/A&gt;. WIC COP is used to test custom CODECs for proper functionality, performance, and registration. WIC COP reports any problems that may exist in a custom CODEC. This tool is invaluable for developers looking to create their own CODEC.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;The WIC documentation, code samples, and developer tools provide a good set of resources for learning and using the WIC API.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H4 style="MARGIN: 10pt 0in 0pt"&gt;&lt;EM&gt;&lt;FONT color=#4f81bd&gt;&lt;FONT face=Cambria&gt;
&lt;H4 style="MARGIN: 10pt 0in 0pt"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-STYLE: normal; COLOR: windowtext; FONT-SIZE: 13.5pt; FONT-WEIGHT: normal; mso-bidi-font-family: Arial; mso-fareast-font-family: 'MS Mincho'; mso-ascii-font-family: Cambria; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Cambria"&gt;&lt;STRONG&gt;What new features are available in Windows 7 and Windows Vista?&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;/H4&gt;&lt;/H4&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;In Windows 7 additional features were added to help complete scenarios for developers and to provide greater level of interoperability between applications that use WIC. All of the new WIC features are available in Windows 7 and will also be available on Windows Vista using a Platform Update download, more information is provided below. Many of the new WIC features are also explained in &lt;A href="http://channel9.msdn.com/posts/yochay/Windows-7-Graphics-WIC/"&gt;&lt;FONT color=#0000ff&gt;this informational video&lt;/FONT&gt;&lt;/A&gt; and in this &lt;A href="http://msdn.microsoft.com/en-us/library/dd408864(VS.85).aspx"&gt;&lt;FONT color=#0000ff&gt;MSDN article&lt;/FONT&gt;&lt;/A&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;In order to support scenarios that involve working with images from the internet, support for decoding progressively encoded images was added. Progressive decoding is used to provide previews of images without having to actually download the complete image, which can often be slow. The new progressive decoding API and the feature are explained in &lt;A href="http://msdn.microsoft.com/en-us/library/dd408863(VS.85).aspx"&gt;&lt;FONT color=#0000ff&gt;this article&lt;/FONT&gt;&lt;/A&gt; and in &lt;A href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=win7wicsamples&amp;amp;DownloadId=7546"&gt;&lt;FONT color=#0000ff&gt;this code sample&lt;/FONT&gt;&lt;/A&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;Another important scenario for developers working with images from the internet is the ability to animate GIF images. WIC now supports reading and writing GIF metadata, which contains timing information necessary for animating GIF images. A code sample is &lt;A href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=win7wicsamples&amp;amp;DownloadId=7547"&gt;&lt;FONT color=#0000ff&gt;available here&lt;/FONT&gt;&lt;/A&gt; that shows how to extract GIF metadata data and animate an image with Direct2D. WIC also supports additional TIFF formats such as JPEG encoded TIFF, Planar TIFFs, and tiled TIFFs. These image formats are created by popular imaging applications.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;An important feature for any user working with digital photographs is the ability to preserve metadata across a variety of applications and platforms. By implementing the guidance of the &lt;A href="http://www.metadataworkinggroup.com/"&gt;&lt;FONT color=#0000ff&gt;Metadata Working Group&lt;/FONT&gt;&lt;/A&gt; (MWG), images edited and viewed in Windows 7 are compatible with a large variety of applications. Users can be confident that metadata added to, or read from images in Windows 7 will preserved when the image is used in, or created in an application that does not use WIC. The MWG guidelines specify metadata locations to read from and write to for common fields such as Keywords, Author, etc. Applications that use the &lt;A href="http://msdn.microsoft.com/en-us/library/aa968944(VS.85).aspx#metadatapolicy"&gt;&lt;FONT color=#0000ff&gt;Metadata Policy Layer&lt;/FONT&gt;&lt;/A&gt; in WIC for reading and writing metadata will be able to automatically take advantage of the increased metadata interoperation. &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;With the new features available in Windows 7 along with the ones already available since Vista, WIC is able to provide a compelling platform for working with images.&lt;EM&gt;&lt;FONT color=#4f81bd&gt;&lt;FONT face=Cambria&gt;&lt;o:p&gt;&amp;nbsp; &lt;/P&gt;
&lt;H4 style="MARGIN: 10pt 0in 0pt"&gt;
&lt;H4 style="MARGIN: 10pt 0in 0pt"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-STYLE: normal; COLOR: windowtext; FONT-SIZE: 13.5pt; FONT-WEIGHT: normal; mso-bidi-font-family: Arial; mso-fareast-font-family: 'MS Mincho'; mso-ascii-font-family: Cambria; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Cambria"&gt;&lt;STRONG&gt;Additional Information related to Imaging on Windows&lt;/STRONG&gt; &lt;/SPAN&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;/H4&gt;&lt;/H4&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;-&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms737408(VS.85).aspx"&gt;&lt;FONT color=#0000ff&gt;WIC Overview&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;-&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://code.msdn.microsoft.com/win7wicsamples"&gt;&lt;FONT color=#0000ff&gt;WIC Samples&lt;/FONT&gt;&lt;/A&gt; (Progressive Decoding, Animated GIF, available here)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;-&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/dd408863(VS.85).aspx"&gt;&lt;FONT color=#0000ff&gt;WIC Progressive Decoding Article&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;-&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/cc956175(VS.85).aspx"&gt;&lt;FONT color=#0000ff&gt;Creating a custom WIC CODEC&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;-&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://code.msdn.microsoft.com/wictools"&gt;&lt;FONT color=#0000ff&gt;WIC Explorer &amp;amp; WIC COP&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;-&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://channel9.msdn.com/posts/yochay/Windows-7-Graphics-WIC/"&gt;&lt;FONT color=#0000ff&gt;WIC Overview Video&lt;/FONT&gt;&lt;/A&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;-&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://support.microsoft.com/kb/971644"&gt;&lt;FONT color=#0000ff&gt;Platform Update for Windows Vista&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;-&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ee220571.aspx"&gt;&lt;FONT color=#0000ff&gt;Device Stage – Windows 7 only&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9921659" width="1" height="1"&gt;</content><author><name>Varun Bhartia</name><uri>http://blogs.msdn.com/Varun-Bhartia/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Announcing the Direct2D Debug Layer</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/10/30/announcing-the-direct2d-debug-layer.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/10/30/announcing-the-direct2d-debug-layer.aspx</id><published>2009-10-30T21:02:00Z</published><updated>2009-10-30T21:02:00Z</updated><content type="html">&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Just like Direct3D 10, Direct2D was designed to fit hand in glove with an optional debug layer that allows developers to receive rich information about design-time issues they might encounter when using Direct2D. Today, the Direct2D team is happy to announce that the debug layer is available from code gallery. For more information, and to download the layer, please see &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/dd940309.aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd940309.aspx"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;the debug layer entry in the SDK&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 10pt 0in 0pt"&gt;&lt;FONT size=4&gt;&lt;FONT face=Cambria&gt;About the Direct2D Debug Layer &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;The Direct2D debug layer is an independent component that will intercept calls made from the application to Direct2D and provide feedback about various classes of errors, for example:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Incorrect threading usage of Direct2D objects.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Using Direct2D objects with the wrong factory.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Incorrect parameters passed to Direct2D.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;In addition, the Direct2D debug layer also provides additional warnings and informational traces about issues that an application might optionally want to address, for example:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Using a software render target when a hardware render target might have been intended.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Using a more expensive primitive when a cheaper one would have worked.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 10pt 0in 0pt"&gt;&lt;FONT size=4&gt;&lt;FONT face=Cambria&gt;Using the Direct2D Debug Layer &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The Direct2D debug layer is designed not to change the behavior of Direct2D when it is used. If the debug layer is installed, it will not be invoked and will not result in any performance overhead unless the application explicitly requests that the debug layer be used. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;To trace all issues, specify the &lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;D2D1_DEBUG_LEVEL_INFORMATION&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; enumeration in the &lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;D2D1_FACTORY_OPTIONS&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; structure before calling &lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;D2D1CreateFactory &lt;/SPAN&gt;&lt;FONT face=Calibri&gt;and run your application under a debugger.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;We hope that you find the debug layer useful. We are also very happy to receive feedback about any issues you encounter during application development where you feel that a debug layer trace would have been helpful so that we can continue to improve the debug layer.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9915471" width="1" height="1"&gt;</content><author><name>Mark Lawrence1</name><uri>http://blogs.msdn.com/Mark-Lawrence/ProfileUrlRedirect.ashx</uri></author><category term="Graphics" scheme="http://blogs.msdn.com/b/directx/archive/tags/Graphics/" /><category term="DirectX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectX/" /><category term="Direct2D" scheme="http://blogs.msdn.com/b/directx/archive/tags/Direct2D/" /><category term="DirectWrite" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectWrite/" /><category term="Debugging" scheme="http://blogs.msdn.com/b/directx/archive/tags/Debugging/" /></entry><entry><title>Platform Update for Windows Vista Released!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/10/27/platform-update-for-windows-vista-released.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/10/27/platform-update-for-windows-vista-released.aspx</id><published>2009-10-27T22:57:00Z</published><updated>2009-10-27T22:57:00Z</updated><content type="html">The Platform Update for Windows Vista, which&amp;nbsp;is in mentioned in a&amp;nbsp;&lt;A title="Platform Update for Windows Vista Blog Post" href="http://blogs.msdn.com/directx/archive/2009/09/10/windows-7-transition-pack-for-windows-vista.aspx" mce_href="http://blogs.msdn.com/directx/archive/2009/09/10/windows-7-transition-pack-for-windows-vista.aspx"&gt;previous post&lt;/A&gt;, just had its final release! Find out more at the &lt;A title="Windows Team Blog" href="http://windowsteamblog.com/blogs/windows7/archive/2009/10/27/announcing-final-releases-of-platform-update-for-windows-vista-technologies.aspx" target=_blank mce_href="http://windowsteamblog.com/blogs/windows7/archive/2009/10/27/announcing-final-releases-of-platform-update-for-windows-vista-technologies.aspx"&gt;Windows Team Blog&lt;/A&gt;.&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9913777" width="1" height="1"&gt;</content><author><name>moneppo</name><uri>http://blogs.msdn.com/moneppo/ProfileUrlRedirect.ashx</uri></author><category term="DX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DX/" /><category term="Graphics" scheme="http://blogs.msdn.com/b/directx/archive/tags/Graphics/" /><category term="DirectX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectX/" /><category term="Direct2D" scheme="http://blogs.msdn.com/b/directx/archive/tags/Direct2D/" /><category term="DirectWrite" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectWrite/" /><category term="direct3d" scheme="http://blogs.msdn.com/b/directx/archive/tags/direct3d/" /><category term="Windows Update" scheme="http://blogs.msdn.com/b/directx/archive/tags/Windows+Update/" /></entry><entry><title>GPU Device Drivers - Driver Distribution</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/10/22/driver_5F00_distribution.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/10/22/driver_5F00_distribution.aspx</id><published>2009-10-22T13:00:00Z</published><updated>2009-10-22T13:00:00Z</updated><content type="html">&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;This post will give readers insight into the GPU device driver distribution process in the Windows PC Ecosystem. Four driver distribution channels are outlined: Inbox, &lt;/FONT&gt;&lt;A href="http://en.wikipedia.org/wiki/Independent_hardware_vendor" target=_blank mce_href="http://en.wikipedia.org/wiki/Independent_hardware_vendor"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;IHV&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;, &lt;/FONT&gt;&lt;A href="http://en.wikipedia.org/wiki/OEM" target=_blank mce_href="http://en.wikipedia.org/wiki/OEM"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;OEM&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;, and Windows Update (WU). Future posts in this series will discuss driver migration from Vista -&amp;gt; Windows 7, hardware support for the various &lt;/FONT&gt;&lt;A href="http://download.microsoft.com/download/5/E/6/5E66B27B-988B-4F50-AF3A-C2FF1E62180F/GRA-T518_WH08.pptx" target=_blank mce_href="http://download.microsoft.com/download/5/E/6/5E66B27B-988B-4F50-AF3A-C2FF1E62180F/GRA-T518_WH08.pptx"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;WDDM&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt; driver models and DirectX version levels, and how these differences affect DirectX developers.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"&gt;&lt;FONT color=#000000 size=4 face=Cambria&gt;Why care about drivers?&lt;/FONT&gt;&lt;/H2&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Every device on a Windows PC has its own driver: Network, Audio, Storage, USB, GPU, etc. Many customers don’t know what a device driver is while others update their drivers each month to get improved performance, reliability,&amp;nbsp;and compatibility with the latest games and applications. We consider the entire spectrum of customers when supporting the Windows PC ecosystem. In order to coordinate Microsoft’s support strategy for these customers with our OEM and IHV partners, the Windows PC Ecosystem has four driver distribution channels which we’ll discuss below.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"&gt;&lt;FONT color=#000000 size=4 face=Cambria&gt;Driver Distribution Channels&lt;/FONT&gt;&lt;/H2&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H3 style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"&gt;&lt;FONT color=#000000 size=3 face=Cambria&gt;Inbox drivers&lt;/FONT&gt;&lt;/H3&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Microsoft provides GPU drivers on the Windows 7 retail DVD on behalf of our top GPU IHV partners (AMD/ATI, Intel, and Nvidia). These drivers provide baseline functionality for about 75% of the GPU marketplace so that customers can have an easy out-of-box setup experience. These drivers are designed and written by the IHV, but are integrated into Microsoft’s development and test engineering processes to ensure compatibility. In addition, the integration of these drivers into the Windows build actually accelerates the OS development process itself because it allows us to identify and resolve issues more efficiently. Some technologies such as OpenGL, CrossFire, SLI, and Hybrid/switchable graphics are absent from the Inbox driver. (For more information on why certain technologies lack Inbox support, please see the &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/whdc/device/display/GraphicsGuideWin7.mspx" target=_blank mce_href="http://www.microsoft.com/whdc/device/display/GraphicsGuideWin7.mspx"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;Windows 7 Graphics Guide&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;.)&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;GPU devices that do not have Inbox drivers are covered by WU which we’ll discuss later. If no inbox or WU driver is available, Windows will load the &lt;I&gt;Standard VGA&lt;/I&gt; driver provided by Microsoft which implements the &lt;/FONT&gt;&lt;A href="http://en.wikipedia.org/wiki/VESA_BIOS_Extensions" target=_blank mce_href="http://en.wikipedia.org/wiki/VESA_BIOS_Extensions"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;VESA&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt; standards. For most systems, this driver will deliver the common display resolutions on a single monitor, the Windows Basic theme without Aero, and limited power management support so the display is still usable. Below is a summary of GPU support available on the Windows 7 retail DVD.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;TABLE style="MARGIN: auto auto auto 1in; BORDER-COLLAPSE: collapse; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableDarkListAccent1 border=0 cellSpacing=0 cellPadding=0 class="MsoTableDarkListAccent1"&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: -1; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: white 2.25pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 44.4pt; PADDING-RIGHT: 5.4pt; BACKGROUND: black; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in; mso-border-bottom-themecolor: background1; mso-background-themecolor: text1" vAlign=top width=59&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;IHV&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: white 2.25pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 82.5pt; PADDING-RIGHT: 5.4pt; BACKGROUND: black; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in; mso-border-bottom-themecolor: background1; mso-background-themecolor: text1" vAlign=top width=110&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Inbox Driver Version (INF)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: white 2.25pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 139.5pt; PADDING-RIGHT: 5.4pt; BACKGROUND: black; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in; mso-border-bottom-themecolor: background1; mso-background-themecolor: text1" vAlign=top width=186&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Devices Supported&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: white 2.25pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 121.5pt; PADDING-RIGHT: 5.4pt; BACKGROUND: black; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in; mso-border-bottom-themecolor: background1; mso-background-themecolor: text1" vAlign=top width=162&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Desktop/Notebook&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 0"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 44.4pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #365f91; BORDER-TOP: #f0f0f0; BORDER-RIGHT: white 2.25pt solid; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-border-right-themecolor: background1; mso-background-themeshade: 191" vAlign=top width=59&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;AMD&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 82.5pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #365f91; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themeshade: 191" vAlign=top width=110&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;8.56.1.0015&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 139.5pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #365f91; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themeshade: 191" vAlign=top width=186&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Radeon 9500 -&amp;gt; Radeon HD 4870&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 121.5pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #365f91; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themeshade: 191" vAlign=top width=162&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Both&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 44.4pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #365f91; BORDER-TOP: #f0f0f0; BORDER-RIGHT: white 2.25pt solid; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-border-right-themecolor: background1; mso-background-themeshade: 191" vAlign=top width=59&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 4" class=MsoNormal&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Intel&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 82.5pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #4f81bd; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in; mso-background-themecolor: accent1" vAlign=top width=110&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;8.15.10.1749&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 139.5pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #4f81bd; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in; mso-background-themecolor: accent1" vAlign=top width=186&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;GMA 950 -&amp;gt; GMA X4500&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 121.5pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #4f81bd; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in; mso-background-themecolor: accent1" vAlign=top width=162&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Both&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 2; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 44.4pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #365f91; BORDER-TOP: #f0f0f0; BORDER-RIGHT: white 2.25pt solid; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-border-right-themecolor: background1; mso-background-themeshade: 191" vAlign=top width=59&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68" class=MsoNormal&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Nvidia&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 82.5pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #365f91; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themeshade: 191" vAlign=top width=110&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;8.15.11.8593&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 139.5pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #365f91; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themeshade: 191" vAlign=top width=186&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;GeForce 6xxx -&amp;gt; 9xxx,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;GeForce GTX2xx,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Quadro (some)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 121.5pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #365f91; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in; mso-background-themecolor: accent1; mso-background-themeshade: 191" vAlign=top width=162&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Desktop Only&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64" class=MsoNormal&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT size=1 face=Calibri&gt;(*Notebook support provided by &lt;A href="http://www.nvidia.com/object/notebook_drivers.html" target=_blank mce_href="http://www.nvidia.com/object/notebook_drivers.html"&gt;Verde&lt;/A&gt; program)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H3 style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"&gt;&lt;FONT color=#000000 size=3 face=Cambria&gt;IHV drivers&lt;/FONT&gt;&lt;/H3&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The Inbox drivers provide a good baseline, but IHV’s continue to innovate and improve their products through new hardware releases and driver updates. IHV drivers may be downloaded directly from vendor websites such as &lt;/FONT&gt;&lt;A href="http://www.amd.com/" target=_blank mce_href="http://www.amd.com/"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;www.amd.com&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;, &lt;/FONT&gt;&lt;A href="http://www.intel.com/" target=_blank mce_href="http://www.intel.com/"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;www.intel.com&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;, &lt;/FONT&gt;&lt;A href="http://www.nvidia.com/" target=_blank mce_href="http://www.nvidia.com/"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;www.nvidia.com&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;, or loaded from a disc included in a retail package. Compared to Inbox drivers, IHV-supplied drivers are updated on a regular basis and tend to have more bug fixes, performance tweaks, and extra features such as OpenGL, CrossFire, SLI, and advanced control panel applets. Windows PC enthusiasts and hardcore gamers download the latest IHV drivers to get the best performance and compatibility with games and graphics intensive applications. For example, &lt;/FONT&gt;&lt;A href="http://www2.ati.com/relnotes/Catalyst_99_release_notes.pdf" target=_blank mce_href="http://www2.ati.com/relnotes/Catalyst_99_release_notes.pdf"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;ATI&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;, &lt;/FONT&gt;&lt;A href="http://downloadmirror.intel.com/18248/eng/relnotes_win7_gfx.htm" target=_blank mce_href="http://downloadmirror.intel.com/18248/eng/relnotes_win7_gfx.htm"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;Intel&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;, and &lt;/FONT&gt;&lt;A href="http://www.nvidia.com/object/win7_winvista_32bit_191.07_whql.html" target=_blank mce_href="http://www.nvidia.com/object/win7_winvista_32bit_191.07_whql.html"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;Nvidia&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt; all list compatibility bug fixes and performance improvements in their latest driver release notes. Most driver updates are not necessary for most customers. But for major reliability fixes which eliminate blue screen errors or &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/whdc/device/display/wddm_timeout.mspx" target=_blank mce_href="http://www.microsoft.com/whdc/device/display/wddm_timeout.mspx"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;TDR hangs&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;, IHV’s can post their drivers on WU as optional downloads and can request they be offered to&amp;nbsp;customers as important updates, when applicable. This delivery mechanism allows the driver to get into the hands of many more customers as we’ll explain later.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"&gt;&lt;FONT color=#000000 size=3 face=Cambria&gt;OEM drivers&lt;/FONT&gt;&lt;/H3&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;OEMs such as HP and Dell typically include customized GPU drivers on their systems which are tested exclusively with the particular hardware platform. These drivers are pre-loaded on the hard drive of shipping systems but can also be downloaded from OEM support websites. Laptop drivers typically have dozens of customizations specific to the hardware feature set and a driver INF file which associates the driver package with the exact &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/whdc/system/pnppwr/pnp/pnpid.mspx" target=_blank mce_href="http://www.microsoft.com/whdc/system/pnppwr/pnp/pnpid.mspx"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;PNPID&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt; of the hardware device.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The PNPID-level customization allows more control over driver distribution. For example, if a customized OEM driver is installed, WU will not offer end-users a generic or IHV-supplied WU driver unless it is specifically targeted for the user's system by the OEM. This scheme gives OEMs more end-to-end control over their products and streamlines product support by reducing the variability in the driver versions that can be installed. This reduced variability helps the OEM maintain a reliable and consistent experience for their customers. But there is a tradeoff: IHV’s continue to innovate with regular driver updates, but many OEM customers are not able to get those updates since the OEM won’t necessarily post them right away.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"&gt;&lt;FONT color=#000000 size=3 face=Cambria&gt;WU drivers&lt;/FONT&gt;&lt;/H3&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;WU drivers provide baseline support for GPU devices which do not have Inbox drivers.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If a customer is using the default Standard VGA driver after OS install or after installing a new video card, the WU client will automatically check the WU servers to see if a better driver is available for download. Depending on which WU options have been previously set on the machine, the driver may download and install automatically, or the customer may be prompted to accept the download. As new devices are released to market, IHVs and OEMs will continue to post drivers&amp;nbsp;on their own support web sites and WU.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;WU also provides a mechanism to widely distribute fixes for customer issues with previously installed drivers. End-users may not know about IHV or OEM websites or may not have the technical expertise or confidence to manually install drivers. So Microsoft works closely with OEM and IHV partners to address known issues and deliver updates automatically via WU. When a partner has a new driver update ready, they can post the driver as an optional download on WU. After several days of customer downloads, Microsoft analyzes reliability trends using opt-in customer feedback tools such as &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/whdc/winlogo/maintain/StartWER.mspx" target=_blank mce_href="http://www.microsoft.com/whdc/winlogo/maintain/StartWER.mspx"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;Windows Error Reporting&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;. In fact, the use of these tools enables Microsoft to track reliability on all drivers regardless of the distribution channel. The data is analyzed and aggregated so noteworthy trends can be shared with IHV and OEM partners allowing them to target fixes more effectively. Based on this deep analysis, Microsoft&amp;nbsp;may promote &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/windows/downloads/windowsupdate/updatelevels.mspx" target=_blank mce_href="http://www.microsoft.com/windows/downloads/windowsupdate/updatelevels.mspx"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;optional driver downloads to important downloads&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt; so that more customers get the fixes automatically.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"&gt;&lt;FONT color=#000000 size=4 face=Cambria&gt;Conclusion&lt;/FONT&gt;&lt;/H2&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;We hope this post sheds some light on the driver distribution process for the Windows PC Ecosystem. Stay tuned for follow-up posts describing driver migration from Vista -&amp;gt; Windows 7, hardware support for the various &lt;/FONT&gt;&lt;A href="http://download.microsoft.com/download/5/E/6/5E66B27B-988B-4F50-AF3A-C2FF1E62180F/GRA-T518_WH08.pptx" target=_blank mce_href="http://download.microsoft.com/download/5/E/6/5E66B27B-988B-4F50-AF3A-C2FF1E62180F/GRA-T518_WH08.pptx"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;WDDM&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt; driver models and the DirectX version levels. In the meantime you can look at the &lt;I style="mso-bidi-font-style: normal"&gt;cardcaps.pdf&lt;/I&gt; document included in the latest &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=b66e14b8-8505-4b17-bf80-edb2df5abad4&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=b66e14b8-8505-4b17-bf80-edb2df5abad4&amp;amp;displaylang=en"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;DirectX SDK&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt; for a breakout of DirectX capabilities vs. GPU device.&lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9911504" width="1" height="1"&gt;</content><author><name>danchar</name><uri>http://blogs.msdn.com/danchar/ProfileUrlRedirect.ashx</uri></author><category term="Windows Update" scheme="http://blogs.msdn.com/b/directx/archive/tags/Windows+Update/" /><category term="OEM" scheme="http://blogs.msdn.com/b/directx/archive/tags/OEM/" /><category term="IHV" scheme="http://blogs.msdn.com/b/directx/archive/tags/IHV/" /><category term="Nvidia" scheme="http://blogs.msdn.com/b/directx/archive/tags/Nvidia/" /><category term="Intel" scheme="http://blogs.msdn.com/b/directx/archive/tags/Intel/" /><category term="GPU" scheme="http://blogs.msdn.com/b/directx/archive/tags/GPU/" /><category term="AMD" scheme="http://blogs.msdn.com/b/directx/archive/tags/AMD/" /><category term="Drivers" scheme="http://blogs.msdn.com/b/directx/archive/tags/Drivers/" /><category term="ATI" scheme="http://blogs.msdn.com/b/directx/archive/tags/ATI/" /><category term="WDDM" scheme="http://blogs.msdn.com/b/directx/archive/tags/WDDM/" /></entry><entry><title>New DirectX MSDN Developer Center</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/10/19/new-directx-msdn-developer-center.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/10/19/new-directx-msdn-developer-center.aspx</id><published>2009-10-19T13:00:00Z</published><updated>2009-10-19T13:00:00Z</updated><content type="html">&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Today I am pleased to announce the new &lt;/FONT&gt;&lt;FONT size=3 face=Calibri&gt;&lt;A title="DirectX MSDN Developer Center" href="http://msdn.microsoft.com/directx" target=_blank mce_href="http://msdn.microsoft.com/directx"&gt;DirectX MSDN Developer Center&lt;/A&gt;. This new site is a complete overhaul of the developer center to make it easier for developers to find the content they are looking for. Using this new site, we hope to provide the best developer content for developers making great graphics applications on a regular basis.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Right from the front page you’ll see the new design pushes the important content right to the front, including downloads, FAQs, documentation, and of course this blog &lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: Wingdings"&gt;J&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; One major change with the site is that the majority of content is now provided through RSS feeds, so if you want to get the latest and greatest downloads or code samples the moment they’re available, you can easily subscribe to any feed by clicking the orange RSS button &lt;/FONT&gt;&lt;/FONT&gt;&lt;IMG style="WIDTH: 16px; HEIGHT: 16px" title="RSS Button" alt="RSS Button" src="http://i.msdn.microsoft.com/dd183105.rss_button(en-us,MSDN.10).gif" width=16 height=16 mce_src="http://i.msdn.microsoft.com/dd183105.rss_button(en-us,MSDN.10).gif"&gt;&lt;FONT size=3 face=Calibri&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;We know that code samples are an important way for developers to learn the ins and outs of our technologies, so we are working to simplify the way developers can get the code samples for DirectX. To this end, many of our important code samples have been made available on &lt;/FONT&gt;&lt;FONT size=3 face=Calibri&gt;&lt;A title="Microsoft Code Gallery" href="http://code.msdn.microsoft.com/" target=_blank mce_href="http://code.msdn.microsoft.com/"&gt;Code Gallery&lt;/A&gt; for direct download. In addition, we have a showcase of the latest DirectX tutorials right on the front page.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;As always, the Developer Center will provide easy access to all of our &lt;/FONT&gt;&lt;FONT size=3 face=Calibri&gt;&lt;A title="DirectX Documentation" href="http://msdn.microsoft.com/en-us/library/aa139795.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/aa139795.aspx"&gt;documentation&lt;/A&gt;. We are constantly looking for ways to improve your experience using this documentation in your development of applications, so please let us know if you have any feedback.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Thanks for reading, and I encourage you to check out &lt;/FONT&gt;&lt;FONT size=3 face=Calibri&gt;&lt;A title="DirectX MSDN Developer Center" href="http://msdn.microsoft.com/directx" target=_blank mce_href="http://msdn.microsoft.com/directx"&gt;the new site&lt;/A&gt;! Stay tuned, as we have even more underway to improve the way you access developer resources for DirectX, including forum improvements and new content!&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Michael Oneppo&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;PM, DirectX&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9909385" width="1" height="1"&gt;</content><author><name>moneppo</name><uri>http://blogs.msdn.com/moneppo/ProfileUrlRedirect.ashx</uri></author><category term="DirectX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectX/" /><category term="Direct2D" scheme="http://blogs.msdn.com/b/directx/archive/tags/Direct2D/" /><category term="DirectWrite" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectWrite/" /><category term="msdn" scheme="http://blogs.msdn.com/b/directx/archive/tags/msdn/" /><category term="direct3d" scheme="http://blogs.msdn.com/b/directx/archive/tags/direct3d/" /></entry><entry><title>Comparing Direct2D and GDI</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/09/29/comparing-direct2d-and-gdi.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/09/29/comparing-direct2d-and-gdi.aspx</id><published>2009-09-29T04:17:00Z</published><updated>2009-09-29T04:17:00Z</updated><content type="html">&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Direct2D and GDI are both immediate mode 2D rendering APIs and both offer some degree of hardware acceleration. This tends to cause some confusion – Why are these APIs different? How are they similar? Does Direct2D make GDI faster? How is Direct2D hardware acceleration different to GDI hardware acceleration? The goal of this post is to provide some insights into the differences between Direct2D and GDI.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;IMG style="WIDTH: 532px; HEIGHT: 474px" title="Direct2D compared to GDI" alt="Direct2D compared to GDI" align=middle src="http://blogs.msdn.com/photos/directx/images/9897719/original.aspx" width=395 height=371 mce_src="http://blogs.msdn.com/photos/directx/images/9897719/original.aspx"&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center; MARGIN: 0in 0in 10pt" class=MsoNormal align=center&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /&gt;&lt;v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"&gt;&lt;/v:path&gt;&lt;o:lock aspectratio="t" v:ext="edit"&gt;&lt;/o:lock&gt;&lt;/v:shapetype&gt;&lt;v:shape style="WIDTH: 4in; HEIGHT: 274.5pt" id=_x0000_i1025 type="#_x0000_t75" o:ole=""&gt;&lt;v:imagedata o:title="" src="file:///C:\Users\mlawrenc\AppData\Local\Temp\msohtmlclip1\01\clip_image001.emz"&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoCaption&gt;&lt;A title=_Ref239222957 name=_Ref239222957&gt;&lt;/A&gt;&lt;STRONG&gt;&lt;FONT color=#4f81bd face=Calibri&gt;Figure &lt;/FONT&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;FONT color=#4f81bd&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-bookmark: _Ref239222957"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;1&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Ref239222957"&gt;&lt;/SPAN&gt; - Direct2D compared to GDI&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 10pt 0in 0pt"&gt;&lt;FONT color=#4f81bd size=4 face=Cambria&gt;How are Direct2D and GDI different?&lt;/FONT&gt;&lt;/H2&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Direct2D and GDI are different in the details of what each API renders and how it goes about driving the display hardware. They are also somewhat different in their underlying design principles.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;GDI renders opaque, aliased geometry (paths, lines, etc). It renders aliased and ClearType text, and can support transparency blending through the AlphaBlend API. However, its handling of transparency is inconsistent. Most APIs simply ignore the alpha channel, some use it. Very few APIs guarantee what the alpha channel will contain after an operation. Perhaps more importantly, GDI’s rendering doesn’t map easily to what a modern GPU renders most efficiently on the 3D portion of its rendering engine. For example, ROPs can’t be implemented by the blend stage of a GPU. However, alpha can. (ROPs can be implemented by copying between render targets and using look up tables or bitwise operations in the pixel shader. However, this is still slower than using the blender stage of the hardware).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;As another example, Direct2D’s aliased lines are designed to be implemented simply as two triangles rendered on the GPU. GDI guarantees that Bresenham’s line drawing algorithm is used.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Direct2D renders opaque, transparent, aliased and anti-aliased primitives. It has strict guarantees on how it both accepts and renders transparent content. This makes designing a modern UI with Direct2D easier and, it also allows Direct2D to render all of its primitives using hardware acceleration. Direct2D is not a pure superset of GDI – primitives that would have been unreasonably slow to implement on a GPU aren’t present in Direct2D. This should at least answer one question - Direct2D doesn’t help improve the performance of GDI, since GDI doesn’t use Direct2D. Neither does Direct2D use GDI. &lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;How Direct2D and GDI differ in terms of architectural layering is shown in Figure &lt;SPAN style="mso-no-proof: yes"&gt;1&lt;/SPAN&gt;. Direct2D uses Direct3D to obtain hardware acceleration. Direct3D in turn uses a user-mode display driver which packages up command streams. Direct3D sends these command streams and resources down into kernel mode for the hardware to process. &lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;One large advantage of this architecture is the ease with which an application can use both Direct2D and Direct3D together.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Since Windows NT 4, GDI has run in kernel mode. The application calls GDI which then calls its kernel mode counterpart. There, GDI passes the primitives to its own driver model. This driver then sends the results to the global kernel mode display driver. Since around Windows 2000, GDI and the GDI drivers have run in an independent space in the kernel called “session space.” A session address space is created for each logon session and each instance of GDI runs independently in this distinct kernel mode address space.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 10pt 0in 0pt"&gt;&lt;FONT color=#4f81bd size=4 face=Cambria&gt;How are GDI and Direct2D Hardware acceleration different?&lt;/FONT&gt;&lt;/H2&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The most important difference between Direct2D and GDI hardware acceleration is that Direct2D is layered on top Direct3D, while GDI has its own independent notion of a driver model. This driver model (the GDI Device Driver Interface or DDI) corresponds to the GDI primitives, while the Direct3D driver model corresponds to what the 3D rendering hardware in a GPU renders. When the GDI DDI was first defined in the early 90’s most display acceleration hardware targeted these GDI primitives. Over time, however, more and more emphasis was placed on 3D game acceleration and less on application acceleration. As a consequence more of the GDI DDI wasn’t implemented by the display driver and in the end, BitBlt was accelerated and most other operations were not.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;This set the stage for a sequence of changes to how GDI renders to the display. The sequence is shown in Figure &lt;SPAN style="mso-no-proof: yes"&gt;2&lt;/SPAN&gt;. There were also a number of additional factors that caused changes to the GDI driver model.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;U&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Increasing complexity and size of display drivers&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Over time display drivers became more complex due largely to the increasing complexity of the 3D portion of the driver. Higher complexity code tends to exhibit more defects; hence it was desirable to move the driver to user-mode where a driver bug wouldn’t cause a reboot. As can be seen in the figure, the display driver has been divided into a complex user mode component and a simpler kernel mode component.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;IMG style="WIDTH: 726px; HEIGHT: 310px" title="GDI evolution" alt="GDI evolution" align=middle src="http://blogs.msdn.com/photos/directx/images/9897802/original.aspx" width=625 height=254 mce_src="http://blogs.msdn.com/photos/directx/images/9897802/original.aspx"&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;v:shape style="WIDTH: 467.25pt; HEIGHT: 189pt" id=_x0000_i1026 type="#_x0000_t75" o:ole=""&gt;&lt;v:imagedata o:title="" src="file:///C:\Users\mlawrenc\AppData\Local\Temp\msohtmlclip1\01\clip_image002.emz"&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoCaption&gt;&lt;A title=_Ref239257106 name=_Ref239257106&gt;&lt;/A&gt;&lt;STRONG&gt;&lt;FONT color=#4f81bd face=Calibri&gt;Figure &lt;/FONT&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;FONT color=#4f81bd&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-bookmark: _Ref239257106"&gt;&lt;SPAN style="mso-no-proof: yes"&gt;2&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Ref239257106"&gt;&lt;/SPAN&gt; - Evolution of GDI display rendering&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;SPAN style="TEXT-DECORATION: none"&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;U&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Difficulty in synchronizing session and global kernel address spaces&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;In Windows XP a display driver exists in two different address spaces, session space and kernel space. Some parts of the driver need to respond to plug ‘n play and power management events. This state needs to be synchronized with the driver state in the session address space. This is a difficult task and display drivers tended to exhibit defects when attempting to deal with these distinct address spaces.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;SPAN style="TEXT-DECORATION: none"&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;SPAN style="TEXT-DECORATION: none"&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;U&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The composited desktop&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The composited desktop required GDI to be able to render to a surface which was then rendered by Direct3D to display. This couldn’t be done easily in the XP driver model since GDI and Direct3D were parallel driver stacks. &lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;As a result, in Windows Vista, the GDI DDI display driver was changed to be only implemented by a Microsoft supplied driver, the Canonical Display Driver (CDD). GDI rendered to a system memory bitmap. Dirty regions were used to update the video memory texture which the window manager uses to composite the desktop. &lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 10pt 0in 0pt"&gt;&lt;FONT color=#4f81bd size=4 face=Cambria&gt;GDI rendering in Windows 7&lt;/FONT&gt;&lt;/H2&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The chief disadvantage of the windows vista driver model was that every GDI window must be backed by both a video memory surface and a system memory surface. This results in system memory being used for each open GDI window.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;For this reason GDI was changed again in Windows 7 to ensure that it does not require a system memory surface per window. Since GDI rendering requires it to read, modify and write the system memory surface, and since the CPU cannot directly access video memory, GDI was modified to render to and from a piece of aperture memory. The aperture memory can be updated from the video memory surface holding the window contents. GDI can render back to the aperture memory, and the result can then be sent back to the window surface. Since the aperture memory segment is addressable by the GPU, the GPU can accelerate these updates to the video memory surface. For example: text rendering, BitBlt with common ROPs, AlphaBlend, TransparentBlt, StretchBlt are all accelerated in these cases. In addition, some operations can bypass the aperture memory segment entirely, such as window BitBlt and ColorFill. &lt;/FONT&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 10pt 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT color=#4f81bd size=4 face=Cambria&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/H2&gt;
&lt;H2 style="MARGIN: 10pt 0in 0pt"&gt;&lt;FONT color=#4f81bd size=4 face=Cambria&gt;Contrasting Direct2D and GDI acceleration in Windows 7&lt;/FONT&gt;&lt;/H2&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Direct2D and GDI are both 2D Immediate-mode rendering APIs and both can be described as hardware accelerated. However, there are a number of differences that remain in both APIs.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;U&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Location of resources&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;GDI maintains its resources, in particular bitmaps, in system memory by default. Direct2D maintains its resources in video memory on the display adapter. As a result, when GDI needs to update video memory, this must always be done over the bus, unless the resource happens to already be copied into the aperture memory segment, or if the operation can be expressed directly.In contract, Direct2D can simply translate its primitives to Direct3D primitives because the resources are already in video memory. &lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;SPAN style="TEXT-DECORATION: none"&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;U&gt;Method of rendering&lt;/U&gt;&lt;/B&gt;&lt;U&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;In order to maintain compatibility GDI performs a large part of its rendering to aperture memory using the CPU. In contrast, Direct2D is a translator that translates its APIs calls into Direct3D primitives. The result is then rendered on the GPU. Some of GDI’s rendering is performed on the GPU when the aperture memory is copied to the video memory surface representing the GDI window, or when it is otherwise possible.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;SPAN style="TEXT-DECORATION: none"&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;U&gt;&lt;FONT size=3 face=Calibri&gt;Scalability&lt;/FONT&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Direct2D’s rendering calls are all independent command streams to the GPU. Each Direct2D factory represents a different Direct3D device. In contract, GDI uses one command stream for all of the applications on the system. GDI’s method can result in some amortization of GPU and CPU rendering context overhead. Direct2D’s approach has little unnecessary serialization between independent command streams.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;U&gt;&lt;FONT size=3 face=Calibri&gt;Location&lt;/FONT&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Of course, Direct2D is entirely in user mode, including the Direct3D run time and the user mode Direct3D driver. GDI, in contrast, has most of its functionality in session space in kernel mode, with its API surface in user mode.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;U&gt;&lt;FONT size=3 face=Calibri&gt;Availability of Hardware Acceleration&lt;/FONT&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;GDI is hardware accelerated on Windows XP, and on Windows 7 when the DWM is running and when a WDDM 1.1 driver is in use. Direct2D is hardware accelerated on any almost any WDDM driver and regardless of whether DWM is in use. There are announced plans to port Direct2D to Windows Vista. Here it will also be hardware accelerated on almost any WDDM driver. On Vista, GDI will always render on the CPU.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;U&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Presentation Model&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;When Windows was first designed, there was insufficient memory to allow every window to be stored in its own bitmap. As a result, GDI always rendered logically directly to the screen, with various clipping regions applied to ensure that it did not render outside of its window. In contract, Direct2D follows a model where the application renders to a back-buffer and the result is atomically “flipped” when the application is done drawing. This allows Direct2D to handle animation scenarios much more fluidly that GDI can.&lt;U&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; tab-stops: 289.65pt" class=MsoNormal&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 10pt 0in 0pt"&gt;&lt;FONT color=#4f81bd size=4 face=Cambria&gt;Conclusion&lt;/FONT&gt;&lt;/H2&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;We hope this post gives you some insights on how GDI and Direct2D work.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;If you have existing GDI code, that will continue to work well under Windows 7.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;But if you are writing new graphics rendering code, you should consider using Direct2D to leverage modern GPUs better.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;For more information on interoperability between Direct2D and GDI see the following:&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://blogs.msdn.com/directx/archive/2009/08/26/directx-componentization-and-interoperability.aspx"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;A previous blog post on Direct2D interoperation&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/dd370971.aspx"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;The SDK article on Direct2D and GDI interoperation&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9900590" width="1" height="1"&gt;</content><author><name>Mark Lawrence1</name><uri>http://blogs.msdn.com/Mark-Lawrence/ProfileUrlRedirect.ashx</uri></author><category term="DX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DX/" /><category term="Graphics" scheme="http://blogs.msdn.com/b/directx/archive/tags/Graphics/" /><category term="DirectX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectX/" /><category term="GDI+" scheme="http://blogs.msdn.com/b/directx/archive/tags/GDI_2B00_/" /><category term="GDI" scheme="http://blogs.msdn.com/b/directx/archive/tags/GDI/" /><category term="Direct2D" scheme="http://blogs.msdn.com/b/directx/archive/tags/Direct2D/" /><category term="DirectWrite" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectWrite/" /></entry><entry><title>D3D9d.dll from March 2009 DirectX SDK mismatch with Windows 7 RTM</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/09/14/d3d9d-dll-from-march-2009-directx-sdk-mismatch-with-windows-7-rtm.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/09/14/d3d9d-dll-from-march-2009-directx-sdk-mismatch-with-windows-7-rtm.aspx</id><published>2009-09-14T21:01:00Z</published><updated>2009-09-14T21:01:00Z</updated><content type="html">&lt;P style="MARGIN: 0in 0in 0pt" class=MsoListParagraph&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;If developers are using the debug version of D3D9 runtime d3d9d.dll from March 2009 DirectX SDK, they may notice compilation or runtime errors when developing on Windows 7 RTM.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;FONT size=3&gt;There is a binary mismatch between d3d9d.dll from March 2009 DirectX SDK and Windows 7.&amp;nbsp; To workaround, developers should be using the latest &lt;/FONT&gt;&lt;A title="August 2009 DirectX SDK" href="http://msdn.microsoft.com/directx/sdk/" target=_blank mce_href="http://msdn.microsoft.com/directx/sdk/"&gt;&lt;FONT color=#0000ff size=3&gt;August 2009 DirectX SDK&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9895134" width="1" height="1"&gt;</content><author><name>maryluo</name><uri>http://blogs.msdn.com/maryluo/ProfileUrlRedirect.ashx</uri></author><category term="DX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DX/" /><category term="DirectX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectX/" /></entry><entry><title>Using Direct2D for Server-Side Rendering</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/09/11/using-direct2d-for-server-side-rendering.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/09/11/using-direct2d-for-server-side-rendering.aspx</id><published>2009-09-11T20:16:00Z</published><updated>2009-09-11T20:16:00Z</updated><content type="html">Some server applications need to render for scenarios like charting and sending back the generated bitmaps to users connected through web clients. During the planning of Direct2D, we decided to put the support of this scenario as one of our design goals. &lt;BR&gt;&lt;BR&gt;&lt;B&gt;Requirements of server-side rendering&lt;/B&gt;&lt;BR&gt;&lt;BR&gt;There are several specific requirements for this scenario. First, usually the process is going to be run in Session 0 for security reason. Session 0 is dedicated for system processes and services, and isolated from user applications. It has higher privilege in some aspects but no privilege in interactive features (details &lt;A href="http://www.microsoft.com/whdc/system/vista/services.mspx" target=_blank mce_href="http://www.microsoft.com/whdc/system/vista/services.mspx"&gt;here&lt;/A&gt;). Second, most servers only have low-end graphics cards, or there may even be no graphics cards inside, thus the availability of hardware acceleration cannot be expected. Third, the application should be able to handle multiple concurrent requests efficiently on a multi-core machine.&lt;BR&gt;&lt;BR&gt;&lt;B&gt;Options of available APIs&lt;/B&gt;&lt;BR&gt;&lt;BR&gt;There are three native 2D rendering APIs that applications can use in Windows Server 2008 R2: GDI, GDI+ and the new Direct2D. I will go through each of them and talk about whether they fit with this scenario. 
&lt;OL&gt;
&lt;LI&gt;&lt;B&gt;GDI&lt;/B&gt;&lt;BR&gt;GDI does not support high-quality drawing. It lacks the support of anti-aliasing, which makes sloped lines jaggy. Moreover, it does not have full support for transparency, such as the support of semi-transparent brushes and pens.&lt;BR&gt;&lt;BR&gt;GDI was not designed for parallel processing and suffers from an inefficient global lock. Windows 7 and Windows Server 2008 R2 have redesigned this lock to be more granular (details &lt;A href="http://blogs.msdn.com/e7/archive/2009/04/25/engineering-windows-7-for-graphics-performance.aspx" target=_blank mce_href="http://blogs.msdn.com/e7/archive/2009/04/25/engineering-windows-7-for-graphics-performance.aspx"&gt;here&lt;/A&gt;), but based on our test results, D2D still scales better.&lt;BR&gt;&lt;BR&gt;Another problem is that the total number of GDI handles is limited to 10240 per process and 65536 per session, because internally Windows uses a 16-bit WORD to store the index of them for each session. Stock objects are excluded from this limitation. Spawning new sessions is one way to overcome the limit, but it increases the memory usage.&lt;BR&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;GDI+&lt;/B&gt;&lt;BR&gt;The main problem with GDI+ for server scenarios is that it does not officially support running in Session 0. Functions that try to interact with the display device will receive errors because it is not allowed in Session 0. Other functions may also fail because even if the function doesn’t seem related to the display device, it may use some paths underneath that are forbidden.&lt;BR&gt;&lt;BR&gt;GDI+ supports anti-aliasing and alpha-blending, thus it doesn’t have the quality issue of GDI. However, there is also a performance issue due to the locking mechanism, and no work in Windows 7 or Windows Server 2008 R2 has been done to improve it in GDI+.&lt;BR&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Direct2D&lt;/B&gt;&lt;BR&gt;D2D was designed with multi-threading and Session 0 in mind from the very beginning. In most multi-threaded cases, D2D can be lock-free by using multiple single-threaded factories, one for each thread. There will be a factory-wide lock if the application has to use the multi-threaded mode of the factory, but it is more granular than those in GDI and GDI+. The impact of this lock is negligible and won’t grow exponentially when the number of threads increases.&lt;/LI&gt;&lt;/OL&gt;&lt;B&gt;How to use Direct2D for server-side rendering&lt;/B&gt;&lt;BR&gt;&lt;BR&gt;A typical server application for this scenario will generate pictures inside the memory using D2D software rendering using multiple threads where each thread draws one picture. 
&lt;OL&gt;
&lt;LI&gt;&lt;B&gt;Software rendering&lt;/B&gt;&lt;BR&gt;To use D2D on a server without hardware acceleration, the key step is to use the software rasterizer by creating a WIC bitmap render target with D2D1_RENDER_TARGET_TYPE_SOFTWARE or D2D1_RENDER_TARGET_TYPE_DEFAULT. The default property will also use software rendering because WIC bitmap render target does not support hardware rendering.&lt;BR&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Multi-threading&lt;/B&gt;&lt;BR&gt;Usually a multi-threaded architecture is good for server rendering. Take a banking application that generates charts for example. The typical case is that there will be many users connected to the server at the same time, and the charts they are asking for can be generated independently. When running on a multi-core server machine, it would be very efficient to create multiple rendering threads and put one charting task to each thread, so that the OS can fully utilize the CPU cores to run rendering tasks in parallel. &lt;BR&gt;&lt;BR&gt;One concern about the design of multi-threaded architecture for D2D is how to create and share factories and render targets across threads. The following figures show three different potential approaches.&lt;BR&gt;&lt;BR&gt;&lt;IMG style="WIDTH: 762px; HEIGHT: 194px" title="Figure 1" alt="Figure 1" src="http://blogs.msdn.com/photos/directx/images/9893218/original.aspx" width=762 height=194 mce_src="http://blogs.msdn.com/photos/directx/images/9893218/original.aspx"&gt;&lt;BR&gt;&lt;IMG style="WIDTH: 762px; HEIGHT: 192px" title="Figure 2" alt="Figure 2" src="http://blogs.msdn.com/photos/directx/images/9893219/original.aspx" width=762 height=192 mce_src="http://blogs.msdn.com/photos/directx/images/9893219/original.aspx"&gt;&lt;BR&gt;&lt;IMG style="WIDTH: 762px; HEIGHT: 193px" title="Figure 3" alt="Figure 3" src="http://blogs.msdn.com/photos/directx/images/9893220/original.aspx" width=762 height=193 mce_src="http://blogs.msdn.com/photos/directx/images/9893220/original.aspx"&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Figure 1 shows different threads sharing the same factory and render target. This architecture is dangerous even if the factory uses multi-threaded mode. The internal lock does not prevent situations like overlapping BeginDraw() and EndDraw() to the same render target, as depicted in the picture. The BeginDraw() in thread 1 will fail because the render target is being used for the drawing of thread 2. We do not support this architecture since it’s unpredictable when multiple threads are changing the state of the same render target simultaneously, e.g. setting the transformation matrix.&lt;BR&gt;&lt;BR&gt;Figure 2 works but only has the same performance as single thread. The D2D locking in multi-threaded mode factory is in function level and all the D2D calls in the same factory will be serialized. As a result, if thread 1 tries to enter a D2D function while thread 2 is in the middle of executing another function, thread 1 will be blocked till thread 2 finishes.&lt;BR&gt;&lt;BR&gt;Figure 3 is what we suggest for server-side rendering. A separate factory is created for each thread. The factory can be put in single-threaded mode if it’s only going to be accessed from within the thread. D2D functions in different threads are lock-free and can run in parallel. The cost of having multiple factories is much less than creating multiple D3D devices, just about 60k each for the memory.&lt;BR&gt;&lt;BR&gt;Although Figure 3 has the best concurrency, you may consider Figure 2 for the benefit of sharing D2D resources that are created from the same factory. &lt;BR&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Generate an image file&lt;/B&gt;&lt;BR&gt;Here are the main steps to generate an image file: &lt;BR&gt;&lt;BR&gt;
&lt;OL&gt;
&lt;LI&gt;Create an IWICBitmap,&lt;/LI&gt;
&lt;LI&gt;Pass the bitmap to CreateWicBitmapRenderTarget(),&lt;/LI&gt;
&lt;LI&gt;BeginDraw(),&lt;/LI&gt;
&lt;LI&gt;Use ID2D1RenderTarget::Clear() to clear the background. To have a transparent background in the output picture, use a color with 0 in the alpha channel for this function.&lt;/LI&gt;
&lt;LI&gt;Draw to the render target,&lt;/LI&gt;
&lt;LI&gt;EndDraw(),&lt;/LI&gt;
&lt;LI&gt;Set up an IWICStream that either writes to a file (InitializeFromFilename) or writes inside the memory (InitializeFromMemory),&lt;/LI&gt;
&lt;LI&gt;Use IWICBitmapFrameEncode to encode the bitmap into the picture format you want.&lt;/LI&gt;&lt;/OL&gt;&lt;BR&gt;For a detailed example see the &lt;A href="http://msdn.microsoft.com/en-us/library/dd756758%28VS.85%29.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/dd756758(VS.85).aspx"&gt;Save as an Image File Sample&lt;/A&gt; on MSDN. &lt;/LI&gt;&lt;/OL&gt;&lt;B&gt;Conclusion&lt;/B&gt;&lt;BR&gt;&lt;BR&gt;As you can see above, using Direct2D for server rendering is simple and straight-forward. It provides high-quality and highly-parallelizable rendering that can be run in low privilege environments of the server. More information about how to use Direct2D can be found on MSDN &lt;A href="http://msdn.microsoft.com/en-us/library/dd370990%28VS.85%29.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/dd370990%28VS.85%29.aspx"&gt;here&lt;/A&gt;.&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9893228" width="1" height="1"&gt;</content><author><name>MSDNArchive</name><uri>http://blogs.msdn.com/MSDNArchive/ProfileUrlRedirect.ashx</uri></author><category term="DX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DX/" /><category term="Graphics" scheme="http://blogs.msdn.com/b/directx/archive/tags/Graphics/" /><category term="Direct2D" scheme="http://blogs.msdn.com/b/directx/archive/tags/Direct2D/" /></entry><entry><title>The Platform Update for Windows Vista </title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/09/10/windows-7-transition-pack-for-windows-vista.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/09/10/windows-7-transition-pack-for-windows-vista.aspx</id><published>2009-09-10T12:15:00Z</published><updated>2009-09-10T12:15:00Z</updated><content type="html">&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT size=3 face=Calibri&gt;Today on the &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;&lt;A title="The Windows Team Blog" href="http://windowsteamblog.com/blogs/windows7/archive/2009/09/10/announcing-new-tools-for-it-professionals-amp-developers-transitioning-to-windows-7.aspx" mce_href="http://windowsteamblog.com/blogs/windows7/archive/2009/09/10/announcing-new-tools-for-it-professionals-amp-developers-transitioning-to-windows-7.aspx"&gt;Windows Team Blog&lt;/A&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;we announced the &lt;/SPAN&gt;Platform Update for Windows Vista&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;. This is a set of runtime libraries that makes it easy for developers to target both Windows 7 and Windows Vista. I am very pleased to tell you that the &lt;/SPAN&gt;Platform Update for Windows Vista &lt;SPAN style="mso-bidi-font-family: Calibri"&gt;includes the&amp;nbsp;new&amp;nbsp;DirectX package, including DirectWrite, Direct2D, Direct3D 11, updates to the Windows Imaging Components, XPS Print API, XPS Rasterization Service, and DXGI 1.1, enabling all new DirectX technologies on Windows Vista as well as Windows 7. In addition, the package provides&amp;nbsp;several other libraries for Windows Vista for ISVs and developers that are transitioning to Windows 7 that make it easier to target and support a mixed customer base of Windows 7 and Windows Vista-based systems.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV align=center&gt;
&lt;TABLE style="BORDER-COLLAPSE: collapse; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 0in 0in 0in" class=MsoNormalTable border=0 cellSpacing=0 cellPadding=0 class="MsoNormalTable"&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 239.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=319&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Feature&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 239.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=319&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Description&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 239.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=319&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Windows Graphics, Imaging, and XPS Library&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 239.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=319&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT size=3 face=Calibri&gt;Latest iteration of the DirectX platform: Direct3D 11, Direct3D 10 Level 9, WARP, Direct2D, DXGI 1.1, DirectWrite, Windows Imaging Components, and XPS Print API, XPS Rasterization Service&lt;/FONT&gt;&lt;A title=_GoBack name=_GoBack&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 239.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=319&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Windows Automation API&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 239.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=319&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Allows accessibility tools and test automations to access Windows user interface in a consistent way across operating system versions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 3"&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 239.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=319&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Windows Portable Devices Platform&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 239.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=319&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Supplies the infrastructure to standardize data transfers between an application and a portable device, such as a mobile phone, digital camera, or portable media player.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 4; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 239.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=319&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Windows Ribbon and Animation Manager Library&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 239.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=319&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Includes the Windows Ribbon API, a command framework that enables developers to quickly and easily create rich ribbon experiences in their applications, and the Windows Animation Manager API, an animation framework for managing the scheduling and execution of user interface element animations. The Windows Animation Manager API can be used with any graphics platform including Direct2D, Direct3D, or GDI+.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;The &lt;/SPAN&gt;Platform Update for Windows Vista &lt;SPAN style="mso-bidi-font-family: Calibri"&gt;will be supplied through Windows Update as a "recommended" install. The package requires Windows Vista SP2 or Windows Server 2008 SP2 or higher, and will be made available to the general public to download during the Windows 7 general availability time frame.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT size=3 face=Calibri&gt;This package provides many cool features from Windows 7 onto Windows Vista in order to make sure developers can target the widest audience without having to wait for everyone to upgrade to Windows 7 in the next few months. That being said, Windows 7 is really the best experience we are providing and if you haven’t already, we recommend checking it out for yourself at &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A title="our Windows tour site" href="http://www.microsoft.com/windows/windows-7/features/tour.aspx" target=_blank mce_href="http://www.microsoft.com/windows/windows-7/features/tour.aspx"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;our Windows 7 tour site&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT size=3 face=Calibri&gt;. If you are a TechNet subscriber, you can even get the RTM version of Windows 7 early at the &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A title="Windows TechNet site" href="http://technet.microsoft.com/en-us/windows" target=_blank mce_href="http://technet.microsoft.com/en-us/windows"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;Windows TechNet site&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;!&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'PMingLiU','serif'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 13.5pt; mso-bidi-font-family: Calibri"&gt;Starting Early&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;So what happens from now until Windows 7 general availability? We’ve set up a &lt;B&gt;public beta&lt;/B&gt; for the &lt;/SPAN&gt;Platform Update for Windows Vista &lt;SPAN style="mso-bidi-font-family: Calibri"&gt;to let developers try it out and for testing deployment. The public beta is also on Windows Update, but you must configure your machine to receive it. We’ve put all the proper setup procedures into a tool you can download off the Microsoft Download Center. Please refer to &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;A title="this download page" href="http://go.microsoft.com/fwlink/?LinkId=160189" target=_blank mce_href="http://go.microsoft.com/fwlink/?LinkId=160189"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;this download page&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt; for information and instructions.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'PMingLiU','serif'"&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 13.5pt; mso-bidi-font-family: Calibri"&gt;Writing Applications&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT size=3 face=Calibri&gt;In order to&amp;nbsp;create software that uses&amp;nbsp;DirectX, you’ll need an SDK to properly target the technologies. Probably the fastest way is to get the DirectX SDK, which includes the headers and import libraries for&amp;nbsp;most DirectX technologies. We just launched the &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A title="August 2009 DirectX SDK" href="http://msdn.microsoft.com/directx/sdk/" target=_blank mce_href="http://msdn.microsoft.com/directx/sdk/"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;&lt;STRONG&gt;August 2009 DirectX SDK&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt; which is available now. This is the RTM version to match Windows 7 and the &lt;/SPAN&gt;Platform Update for Windows Vista&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;, containing the first official release of the DirectX developer resources for Direct3D 11, DXGI, Direct2D, and DirectWrite. The DirectX SDK also includes a multitude of samples and tutorials for Direct3D, as well as the documentation for Direct3D and DXGI. Alternatively, the &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;A title="Windows 7 SDK" href="http://msdn.microsoft.com/en-us/bb980924.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/bb980924.aspx"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;&lt;STRONG&gt;Windows 7 SDK&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&amp;nbsp;is the best way to go to get started with the Windows Imaging Components. In addition, the Windows SDK includes documentation and code samples for Direct2D,&amp;nbsp;DirectWrite,&amp;nbsp;and the Windows Imaging Components.&amp;nbsp;&amp;nbsp;With these SDKs, developers can now publish and distribute applications and games that leverage all of the software and hardware features of DirectX in Windows 7 and Windows Vista.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'PMingLiU','serif'"&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 13.5pt; mso-bidi-font-family: Calibri"&gt;Using the &lt;/SPAN&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 13.5pt"&gt;Platform Update for Windows Vista&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;Once the &lt;/SPAN&gt;Platform Update for Windows Vista &lt;SPAN style="mso-bidi-font-family: Calibri"&gt;goes live, users who have enabled automatic updates will have the DirectX components installed automatically. This way, most Windows users on Windows Vista or Windows 7 will be ready to use DirectX content shortly after Windows 7 general availability. &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;However, not everyone will have Windows Update enabled on their machine. Our data indicates the number of people in this situation will be low, but if you want to target as many customers as possible it would be good to check. To help with this, we've included two resources in the August DirectX SDK: a technical article, &lt;B&gt;"Direct3D 11 Deployment for Game Developers"&lt;/B&gt;, which describes the Windows Update landscape in a little more detail and provides recommendations, and a code sample called the &lt;B&gt;D3D11InstallHelper &lt;/B&gt;which builds into an executable that will execute the whole installation experience for you. In addition, the code sample also provides a set of APIs that allows you to kick off the installation of &lt;/SPAN&gt;Platform Update for Windows Vista &lt;SPAN style="mso-bidi-font-family: Calibri"&gt;from within your application or installer. These resources install the entire &lt;/SPAN&gt;Platform Update for Windows Vista&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;, so although they reference Direct3D 11 in the name, rest assured that all of DirectX is covered. Check out the &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;A title="August 2009 DirectX SDK" href="http://msdn.microsoft.com/directx/sdk/" target=_blank mce_href="http://msdn.microsoft.com/directx/sdk/"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;August 2009 DirectX SDK&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; for details.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-bidi-font-family: Calibri"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Thanks for reading, and we look forward to seeing the amazing applications you will make with DirectX!&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9887132" width="1" height="1"&gt;</content><author><name>moneppo</name><uri>http://blogs.msdn.com/moneppo/ProfileUrlRedirect.ashx</uri></author><category term="DX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DX/" /><category term="Graphics" scheme="http://blogs.msdn.com/b/directx/archive/tags/Graphics/" /><category term="DirectX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectX/" /><category term="Direct2D" scheme="http://blogs.msdn.com/b/directx/archive/tags/Direct2D/" /><category term="DirectWrite" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectWrite/" /></entry><entry><title>DirectX Componentization and Interoperability</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/08/26/directx-componentization-and-interoperability.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/08/26/directx-componentization-and-interoperability.aspx</id><published>2009-08-26T22:15:00Z</published><updated>2009-08-26T22:15:00Z</updated><content type="html">&lt;P&gt;There are many different graphics technologies in Windows, and with Windows 7 we are adding to that collection with new technologies such as Direct2D and DirectWrite. Additionally, technologies such as GDI and GDI+ continue to be used in Windows software for many applications.&lt;/P&gt;
&lt;P&gt;As we have mentioned before, these technologies were all designed with some set of scenarios and customers in mind at some point. And many of these technologies have enjoyed success and are used by a variety of applications, some of which have a history going back more than a decade. For these reasons and more, adopting new technology typically is not done with a brand new application from scratch. Normally there is an existing body of code that either needs to be ported to a new technology, or needs to work with the new technology as seamlessly as possible.&lt;/P&gt;
&lt;P&gt;In this post I want to cover the concept of API interoperability. For the purposes of this post, this is defined as a point in one API where resources from another API can be used. Basically, this denotes a point where the two technologies can be ‘joined together’ and is an opportunity for different versions of the same technology to work together (for example, using D3D11 with D3D10), or for technologies that do similar things to work together (for example, drawing to a GDI surface with D2D). This capability to use APIs together has always existed with DirectX, but some of the mechanisms have been more efficient than others in the past.&lt;/P&gt;
&lt;P&gt;This post is not meant to be exhaustive – each of these points can sometimes require some depth of learning to be harnessed effectively, and future blog posts and white papers will do that. The main goal is to highlight the places where our technologies work together and discuss the philosophy we have around that moving forward.&lt;/P&gt;
&lt;P&gt;The current landscape of DirectX technology is vast. Below is a diagram that I have created to attempt to show both existing technologies (in orange), our new / evolved technology for Windows 7 (in blue) and show an interface or method that links them together wherever possible.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 624px; HEIGHT: 637px" title="Interoperability diagram" alt="Interoperability diagram" src="http://blogs.msdn.com/photos/directx/images/9877736/original.aspx" width=624 height=637 mce_src="http://blogs.msdn.com/photos/directx/images/9877736/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Note that this “subway map” of DirectX APIs does not cover every single way of making them work together, just the main supported or advised ways of doing so. Most APIs have a way of reading and writing raw memory for surfaces, and this is always the most basic way of making two things work together. However, this method of interoperability has the weakness of not allowing good performance when video memory is brought into the picture. It also does not allow an application to take advantage of improvements in how technologies can work together over time.&lt;/P&gt;
&lt;P&gt;There are some key concepts that should be gleaned from this diagram:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The legacy runtimes were not the best at working together. D3D10.0 had no way to talk with GDI. D3D10.0 and D3D9Ex could share surfaces, but they had to manually synchronize. This was a known pain point for developers and is hard to do, because basically you have two different runtimes both asynchronously communicating to the hardware and knowing the state of synchronization between two APIs is difficult.&lt;/LI&gt;
&lt;LI&gt;The Windows 7 technologies are all linked in a common sense way. D2D was designed to consume WIC bitmaps easily and to draw DWrite text easily. D2D can render to D3D10.1 textures without doing any copying or GPU / CPU synchronization. And D3D10.1 and D3D11 can share surfaces between their devices without GPU / CPU synchronization. Going forward we want to keep our new technologies working together this way as a cohesive, componentized stack.&lt;/LI&gt;
&lt;LI&gt;The new Windows 7 APIs can work together with our legacy APIs. They can all talk to GDI (with D3D runtimes doing this through DXGI). This is important because so many applications are still built with GDI, and working with GDI allows incremental use of the new technology as well as an easier port of existing technology if desired. Legacy D3D runtimes can share surfaces with the new runtimes if need be as well.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Hopefully the current state of affairs is clear – we are committed to making sure that our current APIs and technologies work together as well as they can. We know that ideally every single API will work well with any other API, but the reality is that time is limited and we chose to focus on getting the new APIs to work well with GDI, since this is a known point where people need interoperability to work. We will never reach the point where we have 100% mixing of any two APIs, because not all combinations equal sense – we want to invest more heavily in the areas that have the most demand.&lt;/P&gt;
&lt;P&gt;There are many challenges in making interoperability fast, but there are three main factors that are responsible for creating bottlenecks:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Copying resources around in system memory – this eats memory bandwidth and CPU time, either limiting the performance or making an experience eat more resources than it should.&lt;/LI&gt;
&lt;LI&gt;Moving content between the GPU and the CPU – this can tie up the system bus, and tie up resources in managing the copy. It normally also involves similar memory access problems to the normal copying.&lt;/LI&gt;
&lt;LI&gt;Synchronizing GPU / CPU state – the normal mode of operation for GPU communication is asynchronous, because this increases performance by allowing batching up of commands. Synchronization involves flushing these commands and causing a CPU wait.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;In the future our goal is to continue to make our technologies work better together at the API level, mainly through developing all of the components as a cohesive stack that works better together by design and works to remove the above bottlenecks as much as possible. This will be a challenge going forward, but designing this in at the beginning is easier than bolting it on later. &lt;/P&gt;
&lt;P&gt;If there is a particular connection or set of connections in the above diagram that you would like to see more detail on, please leave a comment and let us know. More data about the detail that people want is very useful.&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9867267" width="1" height="1"&gt;</content><author><name>BenCon</name><uri>http://blogs.msdn.com/BenCon/ProfileUrlRedirect.ashx</uri></author><category term="DX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DX/" /><category term="Graphics" scheme="http://blogs.msdn.com/b/directx/archive/tags/Graphics/" /><category term="DirectX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectX/" /><category term="GDI+" scheme="http://blogs.msdn.com/b/directx/archive/tags/GDI_2B00_/" /><category term="GDI" scheme="http://blogs.msdn.com/b/directx/archive/tags/GDI/" /><category term="Direct2D" scheme="http://blogs.msdn.com/b/directx/archive/tags/Direct2D/" /><category term="DirectWrite" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectWrite/" /></entry><entry><title>Paint.NET uses DirectWrite</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/08/14/paint-net-uses-directwrite.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/08/14/paint-net-uses-directwrite.aspx</id><published>2009-08-14T15:00:00Z</published><updated>2009-08-14T15:00:00Z</updated><content type="html">&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The latest alpha build of Paint.NET v3.5 is using DirectWrite instead of GDI for the Text tool if you are running Windows 7. &amp;nbsp;More details and a pointer to download Paint.NET v3.5 that uses DirectWrite is available &lt;/FONT&gt;&lt;A href="http://www.getpaint.net/" mce_href="http://www.getpaint.net/"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;here&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;.&amp;nbsp;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Paint.NET is a graphics editing program for Windows, developed on the .NET Framework. Originally created as a Washington State University student project, Paint.NET has evolved into a powerful graphics editor with support for layers, blending, transparency, and plugins.&lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9869017" width="1" height="1"&gt;</content><author><name>Aisha Ayoub</name><uri>http://blogs.msdn.com/Aisha-Ayoub/ProfileUrlRedirect.ashx</uri></author><category term="DX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DX/" /><category term="Graphics" scheme="http://blogs.msdn.com/b/directx/archive/tags/Graphics/" /><category term="GDI" scheme="http://blogs.msdn.com/b/directx/archive/tags/GDI/" /><category term="DirectWrite" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectWrite/" /></entry><entry><title>Managed Wrappers for the DirectX APIs in Windows 7</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/08/13/managed-wrappers-for-the-directx-apis-in-windows-7.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/08/13/managed-wrappers-for-the-directx-apis-in-windows-7.aspx</id><published>2009-08-13T19:35:00Z</published><updated>2009-08-13T19:35:00Z</updated><content type="html">&lt;p&gt;For applications developed using the .NET framework, there is now a way to leverage the Windows 7 DirectX APIs (Direct3D10, Direct2D, DirectWrite, WIC and Direct3D 11) from your managed applications.&amp;nbsp; The &lt;a mce_href="http://code.msdn.microsoft.com/WindowsAPICodePack" href="http://code.msdn.microsoft.com/WindowsAPICodePack"&gt;Windows API Code Pack&lt;/a&gt; is now available on MSDN.&amp;nbsp; Using Windows API Code Pack you can now incorporate the power of DirectX into your applications without having to write managed-native interop code yourself.&lt;/p&gt;&lt;p&gt;The Windows® API Code Pack for Microsoft® .NET Framework provides a source code library that can be used to access some new Windows 7 features (and some existing features of older versions of Windows operating system) from managed code. &amp;nbsp;It also includes sample applications and API reference documents. You can build the included solution files to get the assemblies for use in your applications (pursuant to the attached license).&amp;nbsp; More information about the Windows API Code Pack is &lt;a mce_href="http://code.msdn.microsoft.com/WindowsAPICodePack" href="http://code.msdn.microsoft.com/WindowsAPICodePack"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9869102" width="1" height="1"&gt;</content><author><name>srirams</name><uri>http://blogs.msdn.com/srirams/ProfileUrlRedirect.ashx</uri></author><category term="DirectX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectX/" /><category term="Managed Code" scheme="http://blogs.msdn.com/b/directx/archive/tags/Managed+Code/" /></entry><entry><title>DirectX videos on Channel 9</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/06/16/directx-videos-on-channel-9.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/06/16/directx-videos-on-channel-9.aspx</id><published>2009-06-16T12:01:00Z</published><updated>2009-06-16T12:01:00Z</updated><content type="html">&lt;P&gt;&lt;A href="http://channel9.msdn.com/" mce_href="http://channel9.msdn.com/"&gt;&lt;FONT size=2 face=Calibri&gt;&lt;/FONT&gt;&lt;/A&gt;
&lt;P&gt;&lt;A href="http://channel9.msdn.com/" mce_href="http://channel9.msdn.com/"&gt;&lt;FONT size=3 face=Calibri&gt;Channel 9&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt; offers another medium for sharing information about the Windows technologies in a developer to developer conversation format.&amp;nbsp;&amp;nbsp; The videos on Channel 9 are designed to provide you additional insights into the DirectX APIs (and other Windows technologies) and take a peek at the underlying architecture.&amp;nbsp; Together with the blog posts and other MSDN documentation, we hope you have all the information you need to create high-quality graphics applications on Windows 7.&amp;nbsp;&amp;nbsp; During the past couple of months&amp;nbsp; we have been working on a number of videos on Channel 9 featuring the DirectX technologies in Windows 7.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The following are already live:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://channel9.msdn.com/posts/yochay/Windows-7-Graphics-Architecture-Overview-Part-1/" mce_href="http://channel9.msdn.com/posts/yochay/Windows-7-Graphics-Architecture-Overview-Part-1/"&gt;&lt;FONT size=3 face=Calibri&gt;Windows 7 Graphics Architecture Overview – Part 1&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://channel9.msdn.com/posts/yochay/Windows-7-Graphics-Architecture-Overview-Part-2/" mce_href="http://channel9.msdn.com/posts/yochay/Windows-7-Graphics-Architecture-Overview-Part-2/"&gt;&lt;FONT size=3 face=Calibri&gt;Windows 7 Graphics Architecture Overview – Part 2&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://channel9.msdn.com/posts/yochay/Windows-7-Graphics-Architecture-Overview-Part-3/" mce_href="http://channel9.msdn.com/posts/yochay/Windows-7-Graphics-Architecture-Overview-Part-3/"&gt;&lt;FONT size=3 face=Calibri&gt;Windows 7 Graphics Architecture Overview – Part 3&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://channel9.msdn.com/posts/yochay/Windows-7-Graphics-WIC/" mce_href="http://channel9.msdn.com/posts/yochay/Windows-7-Graphics-WIC/"&gt;&lt;FONT size=3 face=Calibri&gt;Windows 7 Graphics - WIC&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://channel9.msdn.com/posts/yochay/Windows-7-Graphics--High-DPI/" mce_href="http://channel9.msdn.com/posts/yochay/Windows-7-Graphics--High-DPI/"&gt;&lt;FONT size=3 face=Calibri&gt;Windows 7 Graphics - High-DPI&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3 face=Calibri&gt;Look for more videos on the different areas within DirectX in the near future.&amp;nbsp; Please check them out and send us your comments.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9756472" width="1" height="1"&gt;</content><author><name>srirams</name><uri>http://blogs.msdn.com/srirams/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Responding to comments - 2D drawing APIs in Windows</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/06/09/responding-to-comments-2d-drawing-apis-in-windows.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/06/09/responding-to-comments-2d-drawing-apis-in-windows.aspx</id><published>2009-06-10T04:32:00Z</published><updated>2009-06-10T04:32:00Z</updated><content type="html">&lt;P&gt;&lt;EM&gt;How does Direct2D know the "best" size of texture to use for the current video card? In the future, if new cards are released that have improved performance charateristics with larger textures, how will Direct2D scale upwards?&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Direct2D is a very policy free API. It creates a texture the same size as the bitmap that you ask it to create – there are no tricks done under the covers to try and glom textures together for you, or use multiple small bitmaps to make a big one. It is up to the developer to measure the performance with the bitmap sizes used.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;So what' s the plan going forward? Is D2D going to be *the* 2D API, and GDI reduced to a legacy/backwards compatibility role? (please say yes). Or are the two going to live side by side, requiring you developers to switch between them depending on which task we need to do?&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Short answer: Yes.&lt;/P&gt;
&lt;P&gt;More detailed answer: There are no plans to remove GDI from the system, and there are many applications that will continue to use GDI because the cost to rewrite everything with D2D will be too high. The vision going forward is that D2D is *the* 2D API. We are very interested in any feedback that could tell us what is blocking this going forward.&lt;/P&gt;
&lt;P&gt;Features such as ID2D1DCRenderTarget and ID2D1GdiInteropRenderTarget::GetDC were put into the system not as a signal that D2D is meant to always augment GDI, but to enable applications to be ported gradually from GDI to D2D.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;By the way, how does the decision to use DX10.1 as a base impact D3D9 applications? Most apps still use that, after all. Will they be able to make use of D2D in any way?&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;There are two issues here. The first is hardware support – D3D10.1 ships with D3D10Level9 in Windows 7, and this allows D3D10.1 to utilize D3D9 hardware through D3D9 drivers, bypassing the D3D9 runtime entirely. This allows D2D and other applications to use the capabilities of D3D10.1 while still having reach with hardware.&lt;/P&gt;
&lt;P&gt;The issue of using D2D to (for example) draw to D3D9 textures is something that is supported, but requires more code than using D3D10.1. This will be covered in more detail in future white papers and blog posts.&lt;/P&gt;
&lt;P&gt;Going forward we anticipate that new applications will be written with D3D10.1 so that features like WARP can be taken advantage of.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Hi, where can I find information about when the final version of Direct2D/DirectWrite is being released? I need at least a time frame.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;When will DirectX 11 be available for Vista? What is the redistributable vehicle for D3D11, D2D, DirectWrite and when will the RTM redistributable for Vista ship?&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;The final versions of all of the new DirectX APIs (including D2D, DirectWrite, WARP and D3D11) will ship first&amp;nbsp;with Windows 7, and will be made available on Vista afterwards.&amp;nbsp;We are still in the process of finalizing the dates and the logistics for downlevel&amp;nbsp;- stay tuned to hear more from us. You can read more about our Windows 7 shipping plans here:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/e7/archive/2009/05/11/OurNextEngineeringMilestone2.aspx" mce_href="http://blogs.msdn.com/e7/archive/2009/05/11/OurNextEngineeringMilestone2.aspx"&gt;http://blogs.msdn.com/e7/archive/2009/05/11/OurNextEngineeringMilestone2.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9684227" width="1" height="1"&gt;</content><author><name>BenCon</name><uri>http://blogs.msdn.com/BenCon/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>New MSDN article about Direct2D is live</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/06/08/new-msdn-article-about-direct2d-is-live.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/06/08/new-msdn-article-about-direct2d-is-live.aspx</id><published>2009-06-09T05:50:00Z</published><updated>2009-06-09T05:50:00Z</updated><content type="html">&lt;P&gt;MSDN has just published a new article about Direct2D on its web site. The article is written by Kenny Kerr and features some insights from Direct2D team member Mark Lawrence. You can check it out here:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/magazine/dd861344.aspx" mce_href="http://msdn.microsoft.com/en-us/magazine/dd861344.aspx"&gt;http://msdn.microsoft.com/en-us/magazine/dd861344.aspx&lt;/A&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9701721" width="1" height="1"&gt;</content><author><name>BenCon</name><uri>http://blogs.msdn.com/BenCon/ProfileUrlRedirect.ashx</uri></author><category term="Direct2D" scheme="http://blogs.msdn.com/b/directx/archive/tags/Direct2D/" /></entry><entry><title>Changes in Direct2D and DirectWrite between Windows 7 Beta and Windows 7 Release Candidate</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/05/13/changes-in-direct2d-and-directwrite-between-windows-7-beta-and-windows-7-release-candidate.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/05/13/changes-in-direct2d-and-directwrite-between-windows-7-beta-and-windows-7-release-candidate.aspx</id><published>2009-05-13T22:22:00Z</published><updated>2009-05-13T22:22:00Z</updated><content type="html">&lt;P&gt;If you're working on porting a project from Windows 7 Beta to work with the Windows 7 Release Candidate, there are a handful of breaking changes in Direct2D and DirectWrite that you'll need to be aware of. We've documented these changes on MSDN for reference:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A title=Direct2D href="http://msdn.microsoft.com/en-us/library/dd756650(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd756650(VS.85).aspx"&gt;Direct2D &lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A title=DirectWrite href="http://msdn.microsoft.com/en-us/library/dd756561(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd756561(VS.85).aspx"&gt;DWrite&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9610712" width="1" height="1"&gt;</content><author><name>Kam VedBrat</name><uri>http://blogs.msdn.com/KamVedBrat/ProfileUrlRedirect.ashx</uri></author><category term="Direct2D" scheme="http://blogs.msdn.com/b/directx/archive/tags/Direct2D/" /><category term="DirectWrite" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectWrite/" /></entry><entry><title>2D Drawing APIs in Windows</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/05/12/2d-drawing-apis-in-windows.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/05/12/2d-drawing-apis-in-windows.aspx</id><published>2009-05-12T23:14:00Z</published><updated>2009-05-12T23:14:00Z</updated><content type="html">&lt;P&gt;In Windows 7 we have invested heavily in building a new 2D drawing API in the DirectX family called Direct2D. This API was developed to fill several holes in our Windows graphics platform. One of the most important things to rectify was the lack of hardware acceleration for regular 2D application rendering. With the release of Windows Vista, GDI hardware acceleration was removed. We also wanted to modernize the feature set for 2D rendering with antialiasing and alpha blending support, as well as add interoperability with the other modern graphics APIs. Finally, we also wanted to ensure that server side rendering was addressed as part of developing a new API.&lt;/P&gt;
&lt;P&gt;In order to understand how we got to Direct2D, we first look way back in history to when Windows was first developed. The original rendering system (which still exists to this day) was GDI (Graphics Device Interface). This was originally written for 16 bit Windows, but was updated for 32 bit Windows for Windows 95 and Windows NT. Since GDI was developed so long ago for computers with meager abilities, it does not have features such as anti-aliased primitives, and most APIs do not have alpha support.&lt;/P&gt;
&lt;P&gt;Around the Windows 95 time frame, the first version of DirectX was released and DirectDraw was one of the first components. The idea here was to give even more direct access to hardware than the WinG effort allowed, which in turn meant that hardware accelerated blitting was enabled. This stack had some cooperation with GDI, but really was a parallel universe in its own right. &lt;/P&gt;
&lt;P&gt;As graphics hardware evolved, GDI gained the ability to be hardware-accelerated through a set of DDIs (Device Driver Interface). Many video cards came to implement these DDIs, and it became commonplace to buy a video card to improve your Windows performance. Eventually Direct3D came onto the scene with DirectX 2, and also created its own set of DDIs. Video cards started to devote more and more silicon to implementing 3D graphics faster and faster to keep up with a very demanding gaming market. The result was that there were two different realms of hardware acceleration and graphics programming – one built around Direct3D and the other around GDI.&lt;/P&gt;
&lt;P&gt;The fact that Direct3D and GDI were built up from different places with different goals meant that they did not work together as well as some people expected. Features like GetDC were implemented, which helped to bridge the gap, but there were always some frustrations with scenarios where a lot of interleaved rendering was needed. This did not remove the need for such scenarios to be solved, however.&lt;/P&gt;
&lt;P&gt;Around the turn of the century, the limitations of GDI became more apparent. Microsoft invested in a set of extensions to GDI that would be able to fill in some of these gaps in functionality, which became GDI+. Some of these extensions included different pixel depth formats, alpha blending support in bitmap operations and brushes, anti-aliased primitive rendering and more complex primitive rendering. GDI+ also included imaging support such as the ability to open PNG and JPG files. With all of the operations that GDI+ added, though, there was no hardware acceleration support for the operations that it performed.&lt;/P&gt;
&lt;P&gt;GDI+ enjoyed considerable popularity in the managed world because it was the workhorse of the System.Windows.Drawing namespace. Pretty much every Windows Forms application that employed custom rendering used GDI+ to do the work. But GDI+, being built on top of GDI, inherited all of the same issues with regard to Direct3D interoperability; in fact, because it was always rasterizing in software, some scenarios became even worse.&lt;/P&gt;
&lt;P&gt;When it came time to plan Windows 7, it was clear that we needed to address the shortcomings with regard to interoperability, uneven hardware acceleration and capability. Doing this while retaining the existing APIs would have been very difficult. GDI has a very long history and a very large application compatibility space, and trying to wedge alpha blending (for example) into the core GDI API set would have been very difficult to do without risk to existing customers. Since GDI+ was built on top of GDI and had a certain preexisting contract, adding hardware acceleration to it would have been very difficult.&lt;/P&gt;
&lt;P&gt;The solution was to create a new API that could encapsulate the functionality that we wanted, as well as take the interoperability concerns into account. The MIL code (this is the native component in WPF that does the rendering) was a convenient starting point, since it had the rendering features that were needed and provided both software rendering and hardware fallback.&lt;/P&gt;
&lt;P&gt;One of the first things that needed to be done was to change over the rendering code to be based on D3D10.1 rather than D3D9. This decision was made since there were several other technologies being built around this version of the runtime as a basis (10level9, WARP, D3D primitive remoting), and because we see hardware built around this architecture as being the future. This allowed us to design D3D10.1 interoperability, and hence allow these other technologies to interoperate with Direct2D as well.&lt;/P&gt;
&lt;P&gt;Another interoperability work item was leveraging work done in the window manager and in DXGI to make sure that Direct2D and GDI could work together. You can draw with Direct2D to GDI targets, as well as draw with GDI to Direct2D targets. While these features are not free from a performance perspective, they do allow applications to be built mixing the two APIs to allow people to move over to the brave new world.&lt;/P&gt;
&lt;P&gt;A significant chunk of work that was done was to try and make the API expressive from a performance viewpoint. WPF does significant resource management on the behalf of the developer, but this is difficult to do with an immediate mode API that gives control to the developer. This might sound simple, but there are a lot of design decisions around making sure that GPU memory is not allocated without the user asking for it and still allowing people to build what they want. The design of the D2D factory and the resource / threading model that follows from it allow server side rendering to scale appropriately in a way that GDI cannot.&lt;/P&gt;
&lt;P&gt;The way that text and imaging was approached was to leverage DirectWrite and WIC, respectively. This represents an approach that we are moving towards which is more componentized. Direct2D takes care of hardware accelerating the rasterization of DirectWrite text and hardware accelerating bitmaps taken from WIC, in a complementary fashion rather than a subsuming one.&lt;/P&gt;
&lt;P&gt;In the end, what we have built is a hardware accelerated 2D rendering API (with software fallback) with a modern primitive rendering set that allows interoperability with previous APIs as well as the state of the art APIs. We feel that this will be a worthy replacement for GDI and GDI+ for most application development scenarios, and will also be able to complement D3D10.1 in some game development scenarios as well. The componentized fashion that was used to build the full set of technologies will also allow developers to mix and match pieces to build things that were hard to build before, such as being able to render subpixel positioned text directly into Direct3D textures with support for any font. We hope that this technology will be useful, and we would love to hear feedback on how to make it better in the future.&lt;/P&gt;
&lt;P&gt;For more information about Direct2D, you can read the following:&lt;/P&gt;
&lt;P&gt;MSDN Documentation: &lt;A href="http://msdn.microsoft.com/en-us/library/dd370990(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd370990(VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/dd370990(VS.85).aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;PDC talk: &lt;A href="http://channel9.msdn.com/pdc2008/PC18/" mce_href="http://channel9.msdn.com/pdc2008/PC18/"&gt;http://channel9.msdn.com/pdc2008/PC18/&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9608070" width="1" height="1"&gt;</content><author><name>BenCon</name><uri>http://blogs.msdn.com/BenCon/ProfileUrlRedirect.ashx</uri></author><category term="Graphics" scheme="http://blogs.msdn.com/b/directx/archive/tags/Graphics/" /><category term="GDI+" scheme="http://blogs.msdn.com/b/directx/archive/tags/GDI_2B00_/" /><category term="GDI" scheme="http://blogs.msdn.com/b/directx/archive/tags/GDI/" /><category term="Direct2D" scheme="http://blogs.msdn.com/b/directx/archive/tags/Direct2D/" /></entry><entry><title>Welcome to the DirectX Blog</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/directx/archive/2009/04/20/welcome-to-the-directx-blog.aspx" /><id>http://blogs.msdn.com/b/directx/archive/2009/04/20/welcome-to-the-directx-blog.aspx</id><published>2009-04-20T23:32:00Z</published><updated>2009-04-20T23:32:00Z</updated><content type="html">&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Welcome to the DirectX blog! Today Windows supports a number of APIs such as GDI, GDI+, D3D etc. that often provide overlapping graphics functionality. When we started working on Windows 7, one of our goals was to rationalize our graphics APIs and at the same time update them with the features that application developers wanted. We wanted these APIs to be modular and composable with existing graphics APIs. To this end, we put together a team to be responsible for graphics in Windows. In this blog you will get to hear directly and interact with the engineers in this team. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;“DirectX” originated as a brand name for Windows technologies aimed at simplifying the game development experience. DirectX bypassed the abstractions put in place for standard application development and provided the developer direct access to graphics, audio, and input hardware. This unified set of technologies provided game developers a single SDK for all their development needs. Over time, these technologies moved to be unified across many platforms provided by Microsoft, specifically the Xbox 360 and Windows. These technologies, specifically DirectInput and DirectSound, moved away from the DirectX brand and associated with the XNA brand, changing their names to XInput and XAudio. Only one technology kept the DirectX branding: Direct3D. In fact, DirectX has become synonymous with Direct3D to the extent that the PC ecosystem (Graphics IHVs, PC OEMs, Game Developers and Enthusiast end users) uses “DirectX” as a way to refer to the graphics capabilities of their machine.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;On a parallel front, Windows maintained an extensive set of graphics technologies to meet the needs of application developers and the UI for the operating system. Graphics is composed of 2D, 3D, text rendering, imaging, and device management. These tasks were managed primarily though the Graphics Device Interface, or GDI. GDI managed 2D rendering, hardware-accelerated displays and display surface management, imaging, and text rendering. In Windows 2000 we also introduced a new set of APIs for similar functionality, but upgraded capabilities, called GDI+ which was not hardware accelerated.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE style="BORDER-COLLAPSE: collapse; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 0in 0in 0in" class=MsoNormalTable border=0 cellSpacing=0 cellPadding=0 class="MsoNormalTable"&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BACKGROUND: black; BORDER-TOP: black 1pt solid; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: white"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Technology&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BACKGROUND: black; BORDER-TOP: black 1pt solid; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: white"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Existing APIs&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;2D&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;GDI/GDI+&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;3D&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;D3D3…D3D10&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 3"&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Text&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;GDI/GDI+&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 4"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Device Management&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;GDI&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 5; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Imaging&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;GDI/GDI+/WIC&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Thanks to the success of gaming, cheap and capable graphics was available in every PC and even every Smartphone. In the meantime, there developed a need for compelling and rich UI that enabled end users to interact with their PCs using intuitive ways such as with touch and to be able to visualize the profusion of digital content on their PCs in a rich way. The UI designers’ ideas to solve these problems involved taking advantage of the graphics HW to provide high quality visuals animated smoothly in the UI as highlighted in the UI of PC Operating Systems such as Vista. Very soon ISVs wanted to achieve the same level of visual fidelity and smooth animation that the OS provided for their applications’ UI. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Unfortunately the existing APIs were either lacking in modern features (e.g. Lack of Alpha and Anti-aliasing in GDI) or slow (e.g. GDI+) for such usage. Many ISVs also do not have the luxury to rewrite their applications in their entirety to take advantage of existing hardware accelerated APIs like Windows Presentation Foundation (WPF). Hence there was a need to come up with a set of graphics APIs that have the requisite performance and fidelity by using the graphics hardware and that can be used independently and interoperate with existing code-bases. Therefore, we updated some of the more recent APIs such as the Direct3D 10 API and introduced new ones such as Direct2D and DirectWrite. This updated set of graphics APIs are currently in development for Windows 7. With these new technologies, Windows will have a clean, interoperable, hardware-accelerated graphics stack for use with any application. The table below shows how the graphics functionality maps to the existing APIs and the APIs that we recommend using for Windows 7. In general, the new APIs can be substituted for the existing APIs that provide similar functionality, but there will still be cases where identical functionality does not exist in the new APIs, especially in the case of Device Management where GDI continues to be the main API for this functionality. Over time, as we receive feedback from application developers, will work to address all short comings of the new APIs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE style="BORDER-COLLAPSE: collapse; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 0in 0in 0in" class=MsoNormalTable border=0 cellSpacing=0 cellPadding=0 class="MsoNormalTable"&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BACKGROUND: black; BORDER-TOP: black 1pt solid; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: white"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Technology&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BACKGROUND: black; BORDER-TOP: black 1pt solid; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: white"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Existing APIs&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BACKGROUND: black; BORDER-TOP: black 1pt solid; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="COLOR: white"&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Windows 7 Component&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;2D&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;GDI/GDI+&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Direct2D&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;3D&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;D3D3…D3D10&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Direct3D10.1&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 3"&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Text&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;GDI/GDI+&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;DirectWrite&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 4"&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Device Management&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;GDI&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #f0f0f0; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;DXGI 1.1 &amp;amp; GDI&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 5; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Imaging&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; BORDER-RIGHT: #f0f0f0; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;GDI/GDI+/WIC 1.0&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in" vAlign=top width=213&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;Updated WIC&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;We previewed these technologies at PDC in November 2008. You can see the presentations here:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://channel9.msdn.com/pdc2008/PC04/" mce_href="http://channel9.msdn.com/pdc2008/PC04/"&gt;&lt;FONT size=3 face=Calibri&gt;Overview of DirectX APIs&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt;&lt;FONT size=3&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://channel9.msdn.com/pdc2008/PC05/" mce_href="http://channel9.msdn.com/pdc2008/PC05/"&gt;&lt;FONT size=3 face=Calibri&gt;Direct3D&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://channel9.msdn.com/pdc2008/PC18/" mce_href="http://channel9.msdn.com/pdc2008/PC18/"&gt;&lt;FONT size=3 face=Calibri&gt;Direct2D and DirectWrite&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;We hope to communicate with all of you who are developing software to run on Windows and need performant graphics whether it is text, 2D, 3D or images and whether it runs on the CPU or the GPU using this blog. Here you will be able to interact with the engineers building the graphics subsystem in Windows and the APIs that expose its capabilities. So, welcome to the DirectX blog once again!&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9557269" width="1" height="1"&gt;</content><author><name>AnanthaKancherla</name><uri>http://blogs.msdn.com/AnanthaKancherla/ProfileUrlRedirect.ashx</uri></author><category term="DX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DX/" /><category term="Graphics" scheme="http://blogs.msdn.com/b/directx/archive/tags/Graphics/" /><category term="DirectX" scheme="http://blogs.msdn.com/b/directx/archive/tags/DirectX/" /></entry></feed>
