<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>川西 裕幸のブログ : Direct3D</title><link>http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx</link><description>Tags: Direct3D</description><dc:language>ja-JP</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>PDC 2009 (Nov. 19)</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/11/20/9926027.aspx</link><pubDate>Fri, 20 Nov 2009 06:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9926027</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9926027.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9926027</wfw:commentRss><description>&lt;P&gt;PDC 2009 も最終日です。今日はキーノートもなく、以下のセッションに参加しました。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;[SVR10]Lighting up Windows Server 2008 R2 Using the ConcRT on UMS&lt;/LI&gt;
&lt;LI&gt;[VTL02]Axum: A .NET Language for Safe and Scalable Concurrency&lt;/LI&gt;
&lt;LI&gt;[CL03]DirectX11 DirectCompute&lt;/LI&gt;
&lt;LI&gt;[CL35]Custom Behaviors for Advanced Microsoft Silverlight UI Effects&lt;/LI&gt;
&lt;LI&gt;[CL24]XAML Futures in Microsoft .NET Framework, Microsoft Silverlight and Tools&lt;/LI&gt;&lt;/UL&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/SVR10" mce_href="http://microsoftpdc.com/Sessions/SVR10"&gt;Lighting up Windows Server 2008 R2 Using the ConcRT on UMS&lt;/A&gt;&lt;/H4&gt;
&lt;P&gt;Agenda&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;アーキテクチャ概要&lt;/LI&gt;
&lt;LI&gt;タスク&lt;/LI&gt;
&lt;LI&gt;協調型ブロック&lt;/LI&gt;
&lt;LI&gt;UMS（User Mode Scheduling）&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20006_4.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20006_4.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 006" border=0 alt="PDC09 Nov.19 006" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20006_thumb_1.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20006_thumb_1.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;タスク スケジューラーとリソースマネージャについて（性能、生産性、プラットフォーム）。&lt;/P&gt;
&lt;P&gt;UMSスレッドをユーザーが使えることでプラットフォームを改善。UMSによってアプリは、OSに依存せずに、スケジューラーのふるまいを定義できる&lt;/P&gt;
&lt;P&gt;UMSをConcRT（同時実行ランタイム）が使うことによって、次のことが可能になる。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;細粒度の並列化&lt;/LI&gt;
&lt;LI&gt;より決定論的なふるまい&lt;/LI&gt;
&lt;LI&gt;より優れたキャッシュの局所性&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20009_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20009_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 009" border=0 alt="PDC09 Nov.19 009" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20009_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20009_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;タスクグループによってスレッド アフィニティを管理できる。タスクはスケジューラーによって実行するが、ワークスチーリング キューが負荷バランスをとる。&lt;/P&gt;
&lt;P&gt;64以上のプロセッサーをサポート（64ビットOSの場合）：SetThreadIdealProcessorEx&lt;/P&gt;
&lt;P&gt;OpenMPはC/Fortranに、MSの並列ライブラリーはC++に焦点を当てている。&lt;/P&gt;
&lt;P&gt;現在開発中のソフトウェアが10年後にも動作しているとしたら、それは80コアのPCで動作しているかもしれない。だから今から始める必要がある？&lt;/P&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/VTL02" mce_href="http://microsoftpdc.com/Sessions/VTL02"&gt;Axum: A .NET Language for Safe and Scalable Concurrency by Niklas Gustafsson&lt;/A&gt;&lt;/H4&gt;
&lt;P&gt;並列プログラミングには見えない天井があるので（複雑さ・性能・スケーラビリティ）、新しいモデルが必要。Axumは並列のための新しいプログラミング モデルで、共有メモリーと純粋メッセージ渡しとのバランスをとることができる。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20010_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20010_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 010" border=0 alt="PDC09 Nov.19 010" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20010_thumb.jpg" width=213 height=161 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20010_thumb.jpg"&gt;&lt;/A&gt; &lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20011_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20011_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 011" border=0 alt="PDC09 Nov.19 011" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20011_thumb.jpg" width=214 height=161 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20011_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Axumのコンセプト&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;「チャンネル」は2つのエージェント間のメッセージを指揮するポートを定義&lt;/LI&gt;
&lt;LI&gt;「エージェント」はスレッドと同じようなアクティブなコンポーネントだが、共有排他状態へのアクセスが制限されている。チャンネル経由でメッセージを送る。&lt;/LI&gt;
&lt;LI&gt;「ドメイン」は複数のエージェントが共有する状態を定義。エージェントはドメイン内にホストされる。&lt;/LI&gt;
&lt;LI&gt;「スキーマ」はペイロードを定義。&lt;/LI&gt;
&lt;LI&gt;「プロトコル」はメッセージの正しい順序を定義。&lt;/LI&gt;
&lt;LI&gt;「データフロー ネットワーク」は演算間でデータを伝搬させる。&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;ダウンロード：&lt;A href="http://msdn.microsoft.com/devlabs/" mce_href="http://msdn.microsoft.com/devlabs/"&gt;http://msdn.microsoft.com/devlabs/&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;ブログ：&lt;A href="http://blogs.msdn.com/maestroteam/" mce_href="http://blogs.msdn.com/maestroteam/"&gt;http://blogs.msdn.com/maestroteam/&lt;/A&gt; &lt;/P&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/P09-16" mce_href="http://microsoftpdc.com/Sessions/P09-16"&gt;DirectCompute Capturing the Teraflops&lt;/A&gt;&lt;/H4&gt;
&lt;P&gt;概要&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;GPUをCPUのように記述&lt;/LI&gt;
&lt;LI&gt;問題セットの定義&lt;/LI&gt;
&lt;LI&gt;DirectComputeの使い方&lt;/LI&gt;
&lt;LI&gt;データの管理&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;GPUとCPU&lt;/P&gt;
&lt;TABLE border=1 cellSpacing=0 cellPadding=2 width=400&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=200&gt;CPU&lt;/TD&gt;
&lt;TD vAlign=top width=200&gt;GPU&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=200&gt;４コア&lt;/TD&gt;
&lt;TD vAlign=top width=200&gt;32 コア&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=200&gt;４Float 幅 SIMD&lt;/TD&gt;
&lt;TD vAlign=top width=200&gt;32 Float 幅 SIMD&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=200&gt;3GHz&lt;/TD&gt;
&lt;TD vAlign=top width=200&gt;1GHz&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=200&gt;48-96GFlops&lt;/TD&gt;
&lt;TD vAlign=top width=200&gt;1 TeraFlops&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=200&gt;2x Hyper Thread&lt;/TD&gt;
&lt;TD vAlign=top width=200&gt;32x “HyperThread”&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=200&gt;64kB $L1/core&lt;/TD&gt;
&lt;TD vAlign=top width=200&gt;64kB $L1/core&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=200&gt;20GB/s to Memory&lt;/TD&gt;
&lt;TD vAlign=top width=200&gt;150GB/s to Memory&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=200&gt;$200&lt;/TD&gt;
&lt;TD vAlign=top width=200&gt;$200&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=200&gt;200W&lt;/TD&gt;
&lt;TD vAlign=top width=200&gt;200W&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20012_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20012_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 012" border=0 alt="PDC09 Nov.19 012" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20012_thumb.jpg" width=210 height=158 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20012_thumb.jpg"&gt;&lt;/A&gt; &lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20013_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20013_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 013" border=0 alt="PDC09 Nov.19 013" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20013_thumb.jpg" width=206 height=156 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20013_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;GPUはデータ並列プロセッサー、CPUは25GFlops GPUは700GFLops&lt;/P&gt;
&lt;P&gt;DirectComputeの使い方&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;DirectComuoteの初期化&lt;/LI&gt;
&lt;LI&gt;.hlslにGPUコードを作成&lt;/LI&gt;
&lt;LI&gt;DirectX コンパイラーを使ってコンパイル&lt;/LI&gt;
&lt;LI&gt;そのコードをGPUにロード&lt;/LI&gt;
&lt;LI&gt;GPUバッファをセットアップ、アクセス用にビューをセットアップ&lt;/LI&gt;
&lt;LI&gt;データ ビューをカレントにする&lt;/LI&gt;
&lt;LI&gt;GPUでコードを実行&lt;/LI&gt;
&lt;LI&gt;データをCPUメモリーにコピー&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;HLSLは最も広く使われいているデータ並列プログラミング言語。&lt;/P&gt;
&lt;P&gt;DirectX Resource Type&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Buffer Resource Type: 構造化データ&lt;/LI&gt;
&lt;LI&gt;Image Media Resource Type： テクスチャ、1D, 2D, 3D, キューブ、配列&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;リソースビュー：リソースバッファのデータにアクセスするメカニズム&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;GroupSharedレジスター：新しいレジスター&lt;/LI&gt;
&lt;LI&gt;一時レジスターは、汎用レジスター&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;データ並列I/O：1600のアクティブなスレッドのI/Oは容易ではない。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20016_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20016_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 016" border=0 alt="PDC09 Nov.19 016" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20016_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20016_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;ComputeShader 4.* vs 5.0&lt;/P&gt;
&lt;P&gt;ComputeShader 4.*では倍精度は扱わない、5.0から。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20017_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20017_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 017" border=0 alt="PDC09 Nov.19 017" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20017_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20017_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/CL08" mce_href="http://microsoftpdc.com/Sessions/CL08"&gt;Custom Behaviors for Advanced Microsoft Silverlight UI Effects&lt;/A&gt;&lt;/H4&gt;
&lt;P&gt;トリガー、アクション、ビヘイビアーのカスタマイズ&lt;/P&gt;
&lt;P&gt;Public class Grow : TrigggerAction&amp;lt;FrameworkElement&amp;gt; &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp; protected override Invoke(object parameter){ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompositTransform transform = .... &lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;&lt;A title="&amp;#13;&amp;#10;http://blogs.msdn.com/expression/ " href="http://blogs.msdn.com/expression/"&gt;&lt;BR&gt;http://blogs.msdn.com/expression/ &lt;/A&gt;&lt;/P&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/CL24" mce_href="http://microsoftpdc.com/Sessions/CL24"&gt;XAML Futures in Microsoft .NET Framework, Microsoft Silverlight and Tools&lt;/A&gt;&lt;/H4&gt;
&lt;P&gt;現在注力しているのは &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;ランタイム構文解析&lt;/LI&gt;
&lt;LI&gt;静的分析&lt;/LI&gt;
&lt;LI&gt;コンパイル時&lt;/LI&gt;
&lt;LI&gt;デザイン時&lt;/LI&gt;
&lt;LI&gt;ローカリゼーション&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20021_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20021_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 021" border=0 alt="PDC09 Nov.19 021" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20021_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20021_thumb.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;XAMLデータモデル＝Object - Member - Value (O-M-V) + Type&lt;/P&gt;
&lt;P&gt;XAMLノード ストリーム：例えば、XAMLpadでイベントハンドルが可能に&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;IXamlTyoeResolver,&lt;/LI&gt;
&lt;LI&gt;IAmbientProvider&lt;/LI&gt;
&lt;LI&gt;IXamlSchemaContextProvider&lt;/LI&gt;
&lt;LI&gt;IRootObjectProvider&lt;/LI&gt;
&lt;LI&gt;IXamlNameResolver&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;ランタイム構文解析（パーサー）の改善&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;.NET4 はSystem.Xaml.dllを使用&lt;/LI&gt;
&lt;LI&gt;Silverlight 4にはまだ XamlScemaContext が必要&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;アナウンス&lt;/FONT&gt;&lt;/STRONG&gt;：XAML Toolkit &lt;A href="http://code.msdn.microsoft.com/xaml/" mce_href="http://code.msdn.microsoft.com/xaml/"&gt;http://code.msdn.microsoft.com/xaml/&lt;/A&gt; &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;XAMLDom: XDocumentのXLinqのようなもの&lt;/LI&gt;
&lt;LI&gt;XAML FxCop&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20022_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20022_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 022" border=0 alt="PDC09 Nov.19 022" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20022_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20022_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;XAMLローカリゼーション&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;x:Uid か {MarkupExtension}か？&lt;/LI&gt;
&lt;LI&gt;Page.xaml.resx のような形でローカライズできることを考えている&lt;/LI&gt;
&lt;LI&gt;XAML Toolkit で公開する&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20024_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20024_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 024" border=0 alt="PDC09 Nov.19 024" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20024_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20024_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;お願い&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;.NET 4 Beta2 +System.Xaml.dll で初めて下さい&lt;/LI&gt;
&lt;LI&gt;XAML Toolkit CTP をダウンロードして下さい&lt;/LI&gt;
&lt;LI&gt;XAML改善のためフィードバックを下さい&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20025_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20025_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.19 025" border=0 alt="PDC09 Nov.19 025" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20025_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.19_75F7/PDC09%20Nov.19%20025_thumb.jpg"&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9926027" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+Presentation+Foundation/default.aspx">Windows Presentation Foundation</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Parallel/default.aspx">Parallel</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/PDC+2009/default.aspx">PDC 2009</category></item><item><title>PDC 2009 (Nov.18)</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/11/19/9925153.aspx</link><pubDate>Thu, 19 Nov 2009 07:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9925153</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9925153.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9925153</wfw:commentRss><description>&lt;P&gt;PDC09 も本番2日目です（私は3日目ですが）、今日もキーノートがありました。今日、参加したセッションは以下の通りです。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;キーノート&lt;/LI&gt;
&lt;LI&gt;BOF Developers on Better Design, User Experience and Why It Matters&lt;/LI&gt;
&lt;LI&gt;CL34 Media Foundation: Supporting Hardware Codecs and Cameras&lt;/LI&gt;
&lt;LI&gt;CL15 Modern 3D Graphics Using Windows 7 and Direct3D 11 Hardware&lt;/LI&gt;
&lt;LI&gt;FT07 The State of Parallel Programming&lt;/LI&gt;
&lt;LI&gt;CL12 Developing with the Windows API Code Pack for Microsoft .NET Framework&lt;/LI&gt;&lt;/UL&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/KEY02" mce_href="http://microsoftpdc.com/Sessions/KEY02"&gt;キーノート&lt;/A&gt;&lt;/H4&gt;
&lt;P&gt;ウルトラセブンのテーマソングとともに現れたSteven SinofskyがIE9について、HTML5, JavaScriptの高速化、Direct2D・DirectWriteの使用などをアナウンスしましたが、PDC09の参加者（社員は除く）にWindows 7 が乗ったAcerのマルチタッチ ノートPCを&lt;STRONG&gt;無料で配布&lt;/STRONG&gt;するというビッグニュースにかき消されてしまいました（写真は捨てられた箱）。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20022_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20022_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.18 022" border=0 alt="PDC09 Nov.18 022" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20022_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20022_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;次にScott Guthrieが Silverlight 4 Betaのアナウンスをしました。&lt;A href="http://silverlight.net/" mce_href="http://silverlight.net/"&gt;Silverlight.net&lt;/A&gt; からダウンロードできます。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20009_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20009_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.18 009" border=0 alt="PDC09 Nov.18 009" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20009_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20009_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;最後に Kurt DelBene が Office 2010 と Sharepoint 2010 のベータをアナウンスしました。&lt;A title=http://www.microsoft.com/2010/ja href="http://www.microsoft.com/2010/ja" mce_href="http://www.microsoft.com/2010/ja"&gt;http://www.microsoft.com/2010/ja&lt;/A&gt; からダウンロードできます（日本語版）。Sharepoint 2010 は Visual Studio 2010 とちゃんと統合され、F5キーでちゃんとサーバーで実行できると言うと、会場は拍手喝采でした。これまでかなり大変だったんですね。それ以外にも Duet Enteprise for Sharepoint and SAP や Outlook Social Connector もアナウンスされました。最後にMIX10についても言及されていました。&lt;/P&gt;
&lt;H4&gt;Developers on Better Design, User Experience and Why It Matters&lt;/H4&gt;
&lt;P&gt;BOF（Bird of Feather）でした。最初のお題は以下のように書いてありましたが、みんなが意見を言い合うので結局進まず、①だけで終わりました。&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Best and Worst UX Experience? What can we learn?&lt;/LI&gt;
&lt;LI&gt;The UX ROI&lt;/LI&gt;
&lt;LI&gt;Building Better UX Teams)&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;UCD（ユーザー中心設計）や Expression Blend の SketchFlowの話になったのですが、私がペルソナの話が聞きたいと振ったところ、100名くらいの参加者の5・6名がペルソナを使ったことがあると答え、ペルソナで盛り上がりました。そのあと開発者とデザイナーの仕事などの話で終わりました。テーマの割に1時間では時間が少なかったようです。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20012_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20012_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.18 012" border=0 alt="PDC09 Nov.18 012" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20012_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20012_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/CL34" mce_href="http://microsoftpdc.com/Sessions/CL34"&gt;Media Foundation: Supporting Hardware Codecs and Cameras&lt;/A&gt;&lt;/H4&gt;
&lt;P&gt;講演者の Stan Pennington は以前からよく知っていたので楽しみだったのですが、広い部屋に参加者が10名程度しかいなくてかわいそうでした。ランチセッションでネイティブWin32の話だから、少ないとは思いましたが...&lt;/P&gt;
&lt;P&gt;Windows のメディア インフラは以下の通り&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Video for Windows&lt;/LI&gt;
&lt;LI&gt;DirectShow&lt;/LI&gt;
&lt;LI&gt;Windows Media Format SDK&lt;/LI&gt;
&lt;LI&gt;Media Foundation&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20013_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20013_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.18 013" border=0 alt="PDC09 Nov.18 013" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20013_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20013_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;MSがMFを使う理由&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;ストリームオブジェクト（IStream）&lt;/LI&gt;
&lt;LI&gt;接続性とデータフロー&lt;/LI&gt;
&lt;LI&gt;より良いスレッド制御&lt;/LI&gt;
&lt;LI&gt;制約のあるコンポーネントとトポロジー&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;MFの機能&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;COM&lt;/LI&gt;
&lt;LI&gt;C++&lt;/LI&gt;
&lt;LI&gt;Vista&lt;/LI&gt;
&lt;LI&gt;Windows 7&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;Source Reader, Sink Writer, Transcode API, Asynchronous MFT, HW Accerelation&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P&gt;ハードウェア コーデック ライセンス プログラム&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;ビデオ コーデックとビデオ プロセッサーのみ&lt;/LI&gt;
&lt;LI&gt;WME用のインボックスMDTコーデック&lt;/LI&gt;
&lt;LI&gt;ｗｍａｌ＠ｍｉｃｒｏｓｏｆｔ．ｃｏｍにメールしてください。&lt;/LI&gt;
&lt;LI&gt;2種類のコードタイプ Transcode only, General&lt;/LI&gt;
&lt;LI&gt;正しい ＭＦ属性の設定が必要、ＭＦＴはハードウェアデータフローが使える&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ｍｅｄｉａ Ｆｏｕｎｄａｔｉｏｎのブログ &lt;A href="http://blogs.msdn.com/mf/" mce_href="http://blogs.msdn.com/mf/"&gt;http://blogs.msdn.com/mf/&lt;/A&gt; &lt;/P&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/CL15" mce_href="http://microsoftpdc.com/Sessions/CL15"&gt;Modern 3D Graphics Using Windows 7 and Direct3D 11 Hardware&lt;/A&gt;&lt;/H4&gt;
&lt;P&gt;Agenda&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Windows 7 Direct3D レビュー&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;Direct3D 10 レビュー&lt;/LI&gt;
&lt;LI&gt;Expanding Reach: D3D10Level9 &amp;amp; WARP&lt;/LI&gt;
&lt;LI&gt;HLSL &amp;amp; Shader&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;D3D11&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;マルチスレッド&lt;/LI&gt;
&lt;LI&gt;テセレーション&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P&gt;Direct3D 10 パイプライン&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;入力アセンブリー⇒頂点シェーダー⇒ジオメトリーシェーダー⇒ラスタらいざー⇒ピクセルシェーダー⇒出力合成&lt;/P&gt;
&lt;P&gt;Direct3D10 Level9 フィーチャーレベル Level9_2, Level9_1, Level9_1, WARP&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Direct3D 11 デザインゴール&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;非同期リソース ロード&lt;/LI&gt;
&lt;LI&gt;マルチスレッド 描画と状態変更&lt;/LI&gt;
&lt;LI&gt;デバイスとコンテキスト、3つのコンテキスト：デバイス、直接コンテキスト、繰り延べコンテキスト&lt;/LI&gt;
&lt;LI&gt;状態継承&lt;/LI&gt;
&lt;LI&gt;Direct3D 11 APIは D3D10ハードウェアとドライバでも利用可能&lt;/LI&gt;
&lt;LI&gt;VistaとWinodows 7で利用可能&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20018_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20018_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.18 018" border=0 alt="PDC09 Nov.18 018" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20018_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20018_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Direct3D 11 テセレーションは、Bezier, NURBS, 動的・静的テセレーション、変位、再分割に使える&lt;/P&gt;
&lt;P&gt;FBXフォーマット&lt;/P&gt;
&lt;P&gt;Windows Vistaでの性能更新 &lt;A title=http://support.microsoft.com/kb/971644 href="http://support.microsoft.com/kb/971644" mce_href="http://support.microsoft.com/kb/971644"&gt;http://support.microsoft.com/kb/971644&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/P09-17" mce_href="http://microsoftpdc.com/Sessions/P09-17"&gt;The State of Parallel Programming&lt;/A&gt;&lt;/H4&gt;
&lt;P&gt;この講演者の Burton Smith は Microsoft のフェローで&lt;A href="http://itpro.nikkeibp.co.jp/article/Interview/20070905/281191/" mce_href="http://itpro.nikkeibp.co.jp/article/Interview/20070905/281191/"&gt;並列コンピューティングの第一人者&lt;/A&gt;として有名な方のようです。大学の授業のようで非常に難しかったです。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20021_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20021_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.18 021" border=0 alt="PDC09 Nov.18 021" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20021_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20021_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;結論&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;関数型言語とトランザクション メモリーはより高いレベルの並列プログラミングを実現する&lt;/LI&gt;
&lt;LI&gt;分離とアトミックの効率的な実装が重要&lt;/LI&gt;
&lt;LI&gt;アーキテクチャがこれらの助けになるはずだ&lt;/LI&gt;
&lt;LI&gt;フォンノイマン モデルは近々置き換えられるだろう&lt;/LI&gt;&lt;/UL&gt;
&lt;H4&gt;&lt;A href="http://microsoftpdc.com/Sessions/CL12" mce_href="http://microsoftpdc.com/Sessions/CL12"&gt;Developing with the Windows API Code Pack for Microsoft .NET Framework&lt;/A&gt;&lt;/H4&gt;
&lt;P&gt;&lt;A href="http://code.msdn.microsoft.com/WindowsAPICodePack" mce_href="http://code.msdn.microsoft.com/WindowsAPICodePack"&gt;Windows API Code Pack&lt;/A&gt;の使い方をサンプルを使って紹介していました、&lt;/P&gt;
&lt;P&gt;アナウンス：バージョン1.0.1 に更新されたそうです&lt;/P&gt;
&lt;H4&gt;Ask the Expert&lt;/H4&gt;
&lt;P&gt;午後6個半から開催された Ask the Expertは、Microsoftの様々なテクノロジーの専門家（講演者など）とテーブルを囲んでディスカッションできる時間です。これも日本人にはちょっと難しいイベントでしたが、ビールと軽食が出ました。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20023_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20023_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="PDC09 Nov.18 023" border=0 alt="PDC09 Nov.18 023" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20023_thumb.jpg" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/PDC2009Nov.18_9FAE/PDC09%20Nov.18%20023_thumb.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;【追記】各セッションのビデオへのリンクを追加しました&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9925153" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/User+Experience/default.aspx">User Experience</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Parallel/default.aspx">Parallel</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Media+Foundation/default.aspx">Media Foundation</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/PDC+2009/default.aspx">PDC 2009</category></item><item><title>DirectX SDK (August 2009)</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/09/10/9893416.aspx</link><pubDate>Thu, 10 Sep 2009 03:53:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9893416</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9893416.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9893416</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=b66e14b8-8505-4b17-bf80-edb2df5abad4"&gt;DirectX SDK (August 2009)&lt;/a&gt; が公開されました。以下の更新が行われています。&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Direct3D 11 RTM&lt;/li&gt;    &lt;li&gt;ゲーム開発者用の Direct3D 11 の配置&lt;/li&gt;    &lt;li&gt;Effect 11&lt;/li&gt;    &lt;li&gt;Direct3D コンピュート シェーダー拡張 (D3DCSX)&lt;/li&gt;    &lt;li&gt;新しいサンプルと更新&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;基本&lt;/li&gt;      &lt;li&gt;シャドウ&lt;/li&gt;      &lt;li&gt;コンピュート シェーダー&lt;/li&gt;      &lt;li&gt;テセレーション&lt;/li&gt;      &lt;li&gt;BC6H.BC7 テクスチャ圧縮&lt;/li&gt;      &lt;li&gt;DDSファイル形式&lt;/li&gt;      &lt;li&gt;Direct3D 10.1&lt;/li&gt;      &lt;li&gt;Windows 7 タッチ メッセージ&lt;/li&gt;      &lt;li&gt;Games for Windows Showcase S.6 (Direct3D 10 サンプル）&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Games for Windows 技術要件とテスト要件の更新&lt;/li&gt;    &lt;li&gt;XNA テストケース ツールの更新&lt;/li&gt;    &lt;li&gt;XNA 算術演算（Math）の改善&lt;/li&gt;    &lt;li&gt;DirectX SDK ユーティリティの更新&lt;/li&gt;    &lt;li&gt;ドキュメントの更新&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9893416" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Win32/default.aspx">Win32</category></item><item><title>Windows API Code Pack for Microsoft .NET Framework (v1.0)</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/08/10/9862947.aspx</link><pubDate>Mon, 10 Aug 2009 09:27:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9862947</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9862947.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9862947</wfw:commentRss><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://code.msdn.microsoft.com/WindowsAPICodePack"&gt;Windows API Code Pack v1.0&lt;/a&gt; が公開されました。機能的には v0.9 と同じですね。D3D, D2D はサンプルコードもあるので、マネージコードでD3Dを！という方は試してみてください。残念ながらマルチタッチは含まれていません。&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows 7 タスクバー ジャンプリスト、アイコン オーバーレイ、プログレスバー、タブ サムネイル、サムネイル ツールバー&lt;/li&gt;    &lt;li&gt;既知のフォルダー、Windows 7 ライブラリ、非ファイルシステム コンテナ、シェルオブジェクト用のドラッグ＆ドロップ機能 &lt;/li&gt;    &lt;li&gt;Windows 7 エクスプローラー ブラウザー コントロール &lt;/li&gt;    &lt;li&gt;シェル プロパティ システム &lt;/li&gt;    &lt;li&gt;Windows Vista と Windows 7 コモン ファイル ダイアログ（カスタム コントロールを含む） &lt;/li&gt;    &lt;li&gt;Windows Vista と Windows 7 のタスクダイアログ &lt;/li&gt;    &lt;li&gt;Direct3D 11.0、Direct3D 10.0/10.1、DXGI 1.0/1.1、Direct2D 1.0、DirectWrite、Windows Imaging Component (WIC) API（DirectWriteとWICは部分的なサポート） &lt;/li&gt;    &lt;li&gt;センサー プラットフォーム API &lt;/li&gt;    &lt;li&gt;拡張言語サービス API &lt;/li&gt;    &lt;li&gt;電源管理 API&lt;/li&gt;    &lt;li&gt;アプリケーション再起動・リカバリー API&lt;/li&gt;    &lt;li&gt;ネットワーク リスト マネージャ API&lt;/li&gt;    &lt;li&gt;コマンドリンク コントロールとシステム定義シェル アイコン&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9862947" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+Presentation+Foundation/default.aspx">Windows Presentation Foundation</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Direct2D の紹介 (MSDNマガジン6月号)</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/07/15/9833820.aspx</link><pubDate>Wed, 15 Jul 2009 07:26:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9833820</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9833820.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9833820</wfw:commentRss><description>&lt;p&gt;MSDNマガジン6月号に「&lt;a href="http://msdn.microsoft.com/ja-jp/magazine/dd861344.aspx"&gt;Direct2Dの紹介&lt;/a&gt;」記事が載っています。&lt;/p&gt;  &lt;p&gt;GDI, D3D, WPFなどとの比較もあります。&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9833820" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Win32/default.aspx">Win32</category></item><item><title>Media Foundation ⑥ WebCam + WPF XAMLとC#の実装</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/07/07/9821139.aspx</link><pubDate>Tue, 07 Jul 2009 04:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9821139</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9821139.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9821139</wfw:commentRss><description>&lt;P&gt;それでは XAMLとC#を実装しましょう。次のようにビデオ画像と、スライダーで回転・スケールを行うので、XAMLではD3DImageと2つのスライダー（とラベル）を宣言します。一つのスライダーはD3DImageの回転角度に、もう一つはD3DImageのXScaleとYScaleにバインディングします。&lt;/P&gt;
&lt;P&gt;D3DImageはSystem.Windows.Interop名前空間にあるので、名前空間の追加に注意してください。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/MediaFoundationWebCamWPFXAMLC_CC85/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/MediaFoundationWebCamWPFXAMLC_CC85/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/MediaFoundationWebCamWPFXAMLC_CC85/image_thumb_1.png" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/MediaFoundationWebCamWPFXAMLC_CC85/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;H4&gt;C#の実装&lt;/H4&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 8pt; mso-bidi-font-size: 11.0pt" lang=EN-US&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/hiroyuk/archive/2009/03/30/9517928.aspx" mce_href="http://blogs.msdn.com/hiroyuk/archive/2009/03/30/9517928.aspx"&gt;D3DImage チュートリアル&lt;/A&gt;との違いは、初期化時にビデオのサイズを取得していることと、Rendering イベントハンドラーとコールバックを宣言する代わりに、&lt;STRONG&gt;Windows メッセージを処理するためのコールバック&lt;/STRONG&gt;（ここではBltVideo）を HWndSourceクラスのAddHookメソッドを使って宣言することです。そのあとで一回目の非同期サンプリング命令（Sample）を呼び出します。&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; &lt;SPAN style="COLOR: blue"&gt;readonly&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;D3DWrapper&lt;/SPAN&gt; myD3DScene = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;D3DWrapper&lt;/SPAN&gt;(); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #2b91af; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&lt;STRONG&gt;HwndSource&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&lt;STRONG&gt; source;&lt;/STRONG&gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;const&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; WM_PAINT = 0x000F; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;int&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; videoWidth = 0; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;int&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; videoHeight = 0;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: left; mso-layout-grid-align: none" class=MsoNormal align=left&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;... &lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: left; mso-layout-grid-align: none" class=MsoNormal align=left&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; StartDXRendering() &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;{ &lt;BR&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;if&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; (!myD3DImage.IsFrontBufferAvailable) &lt;BR&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;return&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #2b91af; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;IntPtr&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; scene = myD3DScene.Initialize( &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp; new&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; &lt;SPAN style="COLOR: #2b91af"&gt;WindowInteropHelper&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;).Handle, &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp; ref&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; videoWidth, &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp; ref&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; videoHeight); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;myD3DImage.Lock(); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;myD3DImage.SetBackBuffer( &lt;BR&gt;&lt;SPAN style="COLOR: #2b91af"&gt;D3DResourceType&lt;/SPAN&gt;.IDirect3DSurface9, scene); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp; myD3DImage.Unlock(); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&lt;STRONG&gt;source = &lt;SPAN style="COLOR: #2b91af"&gt;HwndSource&lt;/SPAN&gt;.FromHwnd( &lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp; new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;WindowInteropHelper&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;).Handle); &lt;BR&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&lt;STRONG&gt;source.AddHook(&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;HwndSourceHook&lt;/SPAN&gt;(BltVideo)); &lt;BR&gt;myD3DScene.Sample();&lt;/STRONG&gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;}&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 8pt; mso-bidi-font-size: 11.0pt" lang=EN-US&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;BltVideo では WM_PAINT メッセージかどうかを確認して、D3DImageの内容を更新します。そのあとで、メッセージの処理完了を示す handled を true にし、次の非同期サンプリング命令を呼び出します。&lt;/P&gt;
&lt;P style="TEXT-ALIGN: left; mso-layout-grid-align: none" class=MsoNormal align=left&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IntPtr&lt;/SPAN&gt; BltVideo( &lt;SPAN style="COLOR: #2b91af"&gt;IntPtr&lt;/SPAN&gt; hwnd, &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; msg, &lt;SPAN style="COLOR: #2b91af"&gt;IntPtr&lt;/SPAN&gt; wParam,&amp;nbsp; &lt;BR&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; &lt;SPAN style="COLOR: #2b91af"&gt;IntPtr&lt;/SPAN&gt; lParam, &lt;SPAN style="COLOR: blue"&gt;ref&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; handled) &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;{ &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp; if&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; (msg == WM_PAINT) &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp; { &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; myD3DImage.Lock(); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; myD3DImage.AddDirtyRect( &lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Int32Rect&lt;/SPAN&gt;(0, 0, videoWidth, videoHeight)); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; myD3DImage.Unlock(); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; handled = &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; myD3DScene.Sample();&lt;/STRONG&gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp; } &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;&amp;nbsp; return&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt; &lt;SPAN style="COLOR: #2b91af"&gt;IntPtr&lt;/SPAN&gt;.Zero; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang=EN-US&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;ソリューションを添付するので、WebCam のついた PC でビルド・実行してみてください。動作環境は以下の通りです。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Windows 7 (RC) &lt;/LI&gt;
&lt;LI&gt;Windows 7 SDK (RC) &lt;/LI&gt;
&lt;LI&gt;Visual Studio 2008 SP1 &lt;/LI&gt;
&lt;LI&gt;DirectX SDK (Mar 2009) &lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9821139" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/hiroyuk/attachment/9821139.ashx" length="33973" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+Presentation+Foundation/default.aspx">Windows Presentation Foundation</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Media+Foundation/default.aspx">Media Foundation</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Win32/default.aspx">Win32</category></item><item><title>Media Foundation ⑤ WebCam + WPF プロジェクトの作成とC++の実装</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/07/06/9818413.aspx</link><pubDate>Mon, 06 Jul 2009 04:14:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9818413</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9818413.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9818413</wfw:commentRss><description>&lt;p&gt;以前紹介したMedia Foundation の &lt;a href="http://blogs.msdn.com/hiroyuk/archive/2009/06/09/9712615.aspx"&gt;MFCaptureD3D サンプル&lt;/a&gt;を基に、WebCam のビデオ出力を D3DImage 経由で WPF で表示してみましょう。WPF で表示できれば、回転やスケールは思いのままですし、ブラーなどのエフェクトも容易です。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/MediaFoundationWebCamWPF1_E9C5/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/MediaFoundationWebCamWPF1_E9C5/image_thumb.png" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h4&gt;WPFソリューションの作成と混合アセンブリに変換&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/hiroyuk/archive/2009/04/02/9528272.aspx"&gt;D3DImage チュートリアル&lt;/a&gt;を参考にして、WPFソリューションを作成し、MFCaptureD3Dプロジェクトを追加し、&lt;a href="http://blogs.msdn.com/hiroyuk/archive/2009/04/06/9533228.aspx"&gt;C++/CLIの混合アセンブリ&lt;/a&gt;に変換します。マニフェストは明示的に追加しなくても、自動生成のもので構いません。ついでに、&lt;a href="http://blogs.msdn.com/hiroyuk/archive/2009/04/13/9546623.aspx"&gt;WPFプロジェクトの設定&lt;/a&gt;もしておいてください。&lt;/p&gt;  &lt;h4&gt;C++コードの編集&lt;/h4&gt;  &lt;p&gt;まず、キャプチャしたビデオを表示するウィンドウを生成し、メッセージポンプを定義している winmain.cpp を「プロジェクトから除外」します。次にD3DWrapper.cppを追加します。D3DWrapper.cppの内容は以下の通りです。初期化するときにD3Dサーフェイスとビデオの幅と高さを取得して、呼び出し元（つまりC#側）に返します。あとは、SampleメソッドでのMFReaderの非同期サンプリングの命令と、クリーンアップだけです。非同期サンプリングなので、このSampleメソッドが返っても、サンプリングは終了していません。初期化時にMFStartupを、クリーンアップ時にMFShutdownを呼び出していることにも注意してください。&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;#include&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="color: #a31515"&gt;&amp;quot;MFcaptureD3D.h&amp;quot;&lt;/span&gt;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;#include&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="color: #a31515"&gt;&amp;lt;vcclr.h&amp;gt;&lt;/span&gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;using&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="color: blue"&gt;namespace&lt;/span&gt; System;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;CPreview* g_pPreview;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;namespace&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; MFCaptureViewer      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;{      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;ref&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; D3DWrapper&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;{&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;:&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;IntPtr Initialize(IntPtr hwnd, &lt;span style="color: blue"&gt;int&lt;/span&gt;% width, &lt;span style="color: blue"&gt;int&lt;/span&gt;% height)&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LPDIRECT3DSURFACE9 g_pd3dSurface;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MFStartup(MF_VERSION);      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if&lt;/span&gt; (SUCCEEDED(CPreview::CreateInstance((HWND)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; hwnd.ToPointer(),       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (HWND)hwnd.ToPointer(),&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;amp;g_pPreview)))       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: green"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Get Surface        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; g_pPreview-&amp;gt;m_draw.m_pSwapChain-&amp;gt;GetBackBuffer      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (0,D3DBACKBUFFER_TYPE_MONO, &amp;amp;g_pd3dSurface);       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: green"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Video width &amp;amp; height        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; width = g_pPreview-&amp;gt;m_draw.m_width;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; height = g_pPreview-&amp;gt;m_draw.m_height;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return&lt;/span&gt; IntPtr(g_pd3dSurface);       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; return&lt;/span&gt; IntPtr::Zero;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} &lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;VOID Sample()&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;g_pPreview-&amp;gt;m_pReader-&amp;gt;ReadSample(       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;(DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM,       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0,&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;NULL, &lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;NULL,&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;NULL,&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;NULL&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;);      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;VOID Cleanup()&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;g_pPreview-&amp;gt;Release();&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;MFShutdown();       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;}&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;};       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;} &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h4&gt;device.h と device.cpp&lt;/h4&gt;  &lt;p&gt;device.cppでは主にD3D系の処理を行っています。まずバックバッファのD3DSrufaceとビデオの幅・高さを D3DWrapperで取得できるように、device.hで4つのプロパティをパブリックにします。&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;public&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;:      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; UINT&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;m_width;&amp;#160; &lt;span style="color: green"&gt;// moved to public&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;UINT&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;m_height; &lt;span style="color: green"&gt;// moved to public&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;IDirect3DSwapChain9&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;*m_pSwapChain; &lt;span style="color: green"&gt;// moved to public&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;DrawDevice(); &lt;span style="color: green"&gt;// moved to public&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;virtual ~DrawDevice();&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;device.cpp では、マルチスレッドの解決、およびスワップチェーンのブリットは不要なので、次の2か所を変更します。&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;hr = m_pD3D-&amp;gt;CreateDevice(       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;D3DADAPTER_DEFAULT,       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;D3DDEVTYPE_HAL,       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;hwnd,       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;D3DCREATE_HARDWARE_VERTEXPROCESSING |&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; D3DCREATE_FPU_PRESERVE &lt;strong&gt;|        &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family: consolas; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;strong&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;D3DCREATE_MULTITHREADED&lt;/strong&gt;, &lt;font color="#008000"&gt;// Add &lt;/font&gt;&lt;span style="color: green"&gt;       &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;amp;pp,       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;amp;m_pDevice       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;);&lt;/span&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;…&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// Present the frame.        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// Removed        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// hr = m_pDevice-&amp;gt;Present(NULL, NULL, NULL, NULL);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h4&gt;preview.hと preview.cpp&lt;/h4&gt;  &lt;p&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;preview.cpp では主にMF関連の処理を行っています。まず、D3DWrapperで使えるように preview.h で2つのプロパティをパブリックにします。&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;public&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;:      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; IMFSourceReader&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;*m_pReader; &lt;span style="color: green"&gt;// moved to public&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;DrawDevice&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;m_draw;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// moved to public&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;preview.cpp では、以下の2つのメソッドを変更します。前者で追加しているのは winmain.cppで行われていたWebCamデバイスを取得するコードです。後者では、非同期のコールバック内で次のサンプリングを呼び出していたのを、WM_PAINT メッセージの送付に変更しています（必ずしもWM_PAINTでなければならないわけではありません）。WPFではこのメッセージを基にD3DImageへの書き込みを行います。灰色は変更しないコードです。&lt;/font&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;HRESULT CPreview::Initialize()        &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;{        &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;HRESULT hr = S_OK;         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;hr = m_draw.CreateDevice(m_hwndVideo);&lt;/font&gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: green"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: green"&gt;// &lt;/span&gt;&lt;/span&gt;Add to get WebCam         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; IMFActivate **ppDevices;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; UINT32&lt;span style="mso-tab-count: 1"&gt;&amp;#160; &lt;/span&gt;count = 0;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; IMFAttributes *pAttributes=NULL;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; hr = MFCreateAttributes(&amp;amp;pAttributes,1);      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; hr = pAttributes-&amp;gt;SetGUID(      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE,&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID);       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; hr = MFEnumDeviceSources(pAttributes, &amp;amp;ppDevices, &amp;amp;count);      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; if&lt;/span&gt; (count &amp;gt;0)       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; hr = &lt;span style="color: blue"&gt;this&lt;/span&gt;-&amp;gt;SetDevice(ppDevices[0]);       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: green"&gt;&amp;#160;&amp;#160;&amp;#160; // done        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;font color="#808080"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;return hr;         &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;…&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;HRESULT CPreview::OnReadSample(        &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;HRESULT hrStatus,         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;DWORD ,         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;DWORD ,         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;LONGLONG ,         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;IMFSample *pSample&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/font&gt;&lt;span style="color: green"&gt;&lt;font color="#808080"&gt;// Can be NULL          &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;)         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;{        &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;HRESULT hr = S_OK;         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;IMFMediaBuffer *pBuffer = NULL;         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;EnterCriticalSection(&amp;amp;m_critsec);         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;if (FAILED(hrStatus))         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;hr = hrStatus;         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;goto done;         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;if (pSample)         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#808080"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color: green"&gt;&lt;font color="#808080"&gt;// Get the video frame buffer from the sample.          &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;hr = pSample-&amp;gt;GetBufferByIndex(0, &amp;amp;pBuffer);         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;if (FAILED(hr)) { goto done; }         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#808080"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color: green"&gt;&lt;font color="#808080"&gt;// Draw the frame.          &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;hr = m_draw.DrawFrame(pBuffer);         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;if (FAILED(hr)) { goto done; }         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;/font&gt;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: green"&gt;&amp;#160;&amp;#160;&amp;#160; // Add        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;hr = SendMessage(m_hwndEvent, WM_PAINT, 0, 0);&lt;/strong&gt;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// Request the next frame.        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // Removed         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// hr = m_pReader-&amp;gt;ReadSample(        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;//&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;(DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM,         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;//&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;0,         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;//&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NULL,&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;// actual         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;//&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NULL,&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;// flags         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;//&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NULL,&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;// timestamp         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;//&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NULL&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;// sample         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;//&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;);         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;done:        &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;if (FAILED(hr))         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;NotifyError(hr);         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;SafeRelease(&amp;amp;pBuffer);         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;font color="#808080"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;LeaveCriticalSection(&amp;amp;m_critsec);         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;font color="#808080"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;return hr;         &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;ここで追加した SendMessage が非同期サンプリング時のC++とC#との同期問題を解決するカギの一つです。&lt;/p&gt;  &lt;p&gt;この時点で、ソリューション エクスプローラーでこのMFCaptureD3Dプロジェクトを右クリックして、[プロジェクトのみ]→[MFCaptureD3Dのみをリビルド]を実行して、エラーが出ないことを確認してください。&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt;つづく&lt;/span&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9818413" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+Presentation+Foundation/default.aspx">Windows Presentation Foundation</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Media+Foundation/default.aspx">Media Foundation</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Win32/default.aspx">Win32</category></item><item><title>H.264 / AVC デコード DXVAの仕様書の更新</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/06/29/9808088.aspx</link><pubDate>Mon, 29 Jun 2009 05:09:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9808088</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9808088.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9808088</wfw:commentRss><description>&lt;P&gt;DXVAはビデオなどのメディアをGPUでハードウェア デコードするための Win32 API です。ダウンロードセンターに以前からあった&lt;A href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=3d1c290b-310b-4ea2-bf76-714063a6d7a6#filelist" mce_href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=3d1c290b-310b-4ea2-bf76-714063a6d7a6#filelist"&gt;H.264 ハードウェア デコードの仕様書&lt;/A&gt;が少しだけ更新されました（バグフィックス）。&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9808088" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Media+Foundation/default.aspx">Media Foundation</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Win32/default.aspx">Win32</category></item><item><title>RDP 7 の変更</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/06/26/9804555.aspx</link><pubDate>Fri, 26 Jun 2009 03:46:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9804555</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9804555.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9804555</wfw:commentRss><description>&lt;p&gt;Windows 7 の RDP（リモート デスクトップ プロトコル）では、以下のように（PDC 08の資料）多くのテクノロジーがクライアントでレンダリングされる予定でした（RCでは有効です）。&lt;/p&gt;  &lt;p&gt;クライアントでレンダリングできれば、ホストから送られるデータが減らせるためネットワーク帯域の負荷が減らせるとともに、ホスト側の負荷も軽減できます。ホストレンダリングでは、レンダリング結果を毎フレーム 画像として送るので（もちろん何らかの圧縮は掛けますが...）、非効率なため高品質なデスクトップを生成できません。Direct3D や Direct2D のクライアント レンダリング能力は、リモートデスクトップでクライアント側にあるGPU性能がフルに活用できる興味深い仕様でした。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/RDP7RTM_D299/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/RDP7RTM_D299/image_thumb.png" width="484" height="296" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;ところが、&lt;a href="http://blogs.msdn.com/rds/archive/2009/06/19/changes-to-remoting-model-in-rdp-7.aspx"&gt;RDP チームのブログ&lt;/a&gt;によると、Direct2DとDirect3D 10.1 のクライアント レンダリングは Windows 7 RTM 版から取り除かれたそうです（こんな感じ）。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/RDP7RTM_D299/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/RDP7RTM_D299/image_thumb_1.png" width="484" height="300" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;しかし、RDP 7 で Aero Glass は有効ですし、GDIとメディア プレイヤーはクライアント レンダリングなので、クライアント側にある GPU 上のコンポジターはリモートで利用可能なままのようです。&lt;/p&gt;  &lt;p&gt;しかし、RDP チームはクライアント レンダリング機能の強化を続けているので、将来のバージョンアップでは D3D10などもクライアントレンダリング可能になるのでしょう。&lt;/p&gt;  &lt;p&gt;RDPでAero Glassを有効にするには Windows 7 のリモートデスクトップ接続のオプションからデスクトップ コンポジションを有効にする必要があります。Windows Server 2008 R2での設定については、&lt;a href="http://blogs.msdn.com/rds/archive/2009/06/23/aero-glass-remoting-in-windows-server-2008-r2.aspx"&gt;RDPチームのブログ&lt;/a&gt;を参照してください。&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/RDP7RTM_D299/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/RDP7RTM_D299/image_thumb_2.png" width="484" height="438" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9804555" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+Presentation+Foundation/default.aspx">Windows Presentation Foundation</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Media+Foundation/default.aspx">Media Foundation</category></item><item><title>Media Foundation ④ WebCam + WPF 同期か非同期か</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/06/25/9802935.aspx</link><pubDate>Thu, 25 Jun 2009 07:57:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9802935</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9802935.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9802935</wfw:commentRss><description>&lt;p&gt;Windows 7 SDk (RC) にある Media Foundation のサンプル &lt;a href="http://blogs.msdn.com/hiroyuk/archive/2009/06/09/9712615.aspx"&gt;MFCaptureD3D&lt;/a&gt; を使って WPF で WebCam のビデオを表示してみましょう。D3DSurface → D3DImage → WPF という流れは、以前 &lt;a href="http://blogs.msdn.com/hiroyuk/archive/2009/03/30/9517928.aspx"&gt;D3DImage チュートリアル&lt;/a&gt;で紹介したとおりですが、WebCam の画像をWPFで表示するときには、同期サンプリングか非同期サンプリングかのどちらの戦略をとるかを選ばなければなりません。&lt;/p&gt;  &lt;h4&gt;非同期サンプリング&lt;/h4&gt;  &lt;p&gt;MFCaptureD3D では元々サンプリングを非同期で行っています。アトリビュート ストアでMF_SOURCE_READER_ASYNC_CALLBACKを指定し、非同期コールバックを設定しています。&lt;/p&gt;  &lt;p&gt;&lt;font color="#008000"&gt;// ③非同期コールバックを設定&lt;/font&gt;    &lt;br /&gt;&lt;font face="Consolas"&gt;hr = pAttributes-&amp;gt;SetUnknown(      &lt;br /&gt;&amp;#160; MF_SOURCE_READER_ASYNC_CALLBACK,       &lt;br /&gt;&amp;#160; this       &lt;br /&gt;&amp;#160; );&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;サンプリングを待つ時間を他のUIスレッドで使えるので、WPFのようなアプリには非同期が理想的です。&lt;/p&gt;  &lt;p&gt;このサンプルコードでは 非同期コールバックの場所として this が指定されているので、サンプリングが完了すると自クラスの OnReadSample メソッドが呼び出されます。このメソッドで、サンプリングした画像をD3DSurfaceに書き込んでから、C++ から C# に何らかのメッセージを送ってD3DSurfaceにビデオ画像が書き込まれたことを通知する仕組みが必要です。&lt;/p&gt;  &lt;h4&gt;同期サンプリング&lt;/h4&gt;  &lt;p&gt;以前の D3DImage チュートリアルでは、C# 側から Render メソッドで C++ の Direct3D レンダリングを実行し、それが戻ったら、ロックして AddDirtyRect メソッドでブリットしていました。同期サンプリングの戦略であれば、WebCam から画像を取得し D3DSrufaceへの書き込みを待ってブリットするという、同じ手順でレンダリングできます。&lt;/p&gt;  &lt;p&gt;しかし、WebCam デバイスのサンプリングには待ち時間が発生します。しかも1秒間に30フレーム程度確保しようとすると、待ち時間は全体のかなりの割合を占める可能性があります。その間 UI を操作できず、パフォーマンスが悪化する可能性があります。&lt;/p&gt;  &lt;p&gt;同期サンプリングを実装するには、アトリビュートストアに前述の非同期指定（MF_SOURCE_READER_ASYNC_CALLBACK）を入れずに、ソースリーダーを取得して、次のようにReadSampleを呼び出すだけです。同期サンプリングでは ReadSample が帰ったときにサンプル画像が取得できます（実装では取得できるまでサンプリングを繰り返します）。&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;DWORD dwStream;     &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;DWORD dwFlags;     &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;IMFSample* pSample = NULL;     &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;LONGLONG llTimeStamp;     &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: blue"&gt;while&lt;/span&gt;( !pSample )      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160; {     &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; hr = m_pReader-&amp;gt;ReadSample(     &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM,     &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0,     &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;#160;&amp;#160; &amp;amp;dwStream,      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;amp;dwFlags,      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;amp;llTimeStamp,      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;#160;&amp;#160; &amp;amp;pSample      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;);      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt;     &lt;p&gt;結論として、今回のサンプルコードでは、&lt;strong&gt;非同期サンプリングの戦略&lt;/strong&gt;で実装することにしました。両方とも実装してテストしてみましたが、やはり同期サンプリングでは UI 操作の引っ掛かりが発生することと、C++ コードの修正が多くなるためです。&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9802935" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+Presentation+Foundation/default.aspx">Windows Presentation Foundation</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Win32/default.aspx">Win32</category></item><item><title>Windows API Code Pack for Microsoft .NET Framework (v0.9)</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/06/15/9752025.aspx</link><pubDate>Mon, 15 Jun 2009 07:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9752025</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9752025.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9752025</wfw:commentRss><description>&lt;P&gt;Windows API Code Pack が v0.9 に更新されました。内容は以下の通りで、緑色がv0.85からの追加部分です。バグフィックスとともに、VBを含む新しいサンプルも追加されています。&lt;/P&gt;
&lt;P&gt;Direct3D 10/10.1 も追加されました！ &lt;STRONG&gt;D3DX10&lt;/STRONG&gt;も含まれ、チュートリアルを含むサンプルもたくさん用意されているのでかなり役に立ちそうです。チュートリアルにはWinForm用、WinFormコントロール用、WPF用が用意されています。&lt;/P&gt;
&lt;P&gt;しかしマルチタッチは含まれていません。.NET のマルチタッチについては、.NET Framework 4を待つしかないかもしれません。マルチタッチは Visual Studio 2010 Beta1 にもまだ含まれていませんでした。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Windows 7 タスクバー ジャンプリスト、アイコン オーバーレイ、プログレスバー、&lt;FONT color=#008000&gt;タブ サムネイル、サムネイル ツールバー&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;既知のフォルダー、Windows 7 ライブラリ、非ファイルシステム コンテナ、シェル名前空間エンティティの階層 &lt;/LI&gt;
&lt;LI&gt;Windows 7 エクスプローラー ブラウザー コントロール &lt;/LI&gt;
&lt;LI&gt;シェル プロパティ システム &lt;/LI&gt;
&lt;LI&gt;Windows Vista と Windows 7 コモン ファイル ダイアログ（カスタム ファイル ダイアログを含む） &lt;/LI&gt;
&lt;LI&gt;Windows Vista と Windows 7 のタスクダイアログ &lt;/LI&gt;
&lt;LI&gt;Direct3D 11.0、&lt;FONT color=#008000&gt;Direct3D 10.0/10.1&lt;/FONT&gt;、DXGI 1.0/1.1、&lt;FONT color=#008000&gt;Direct2D 1.0、DirectWrite、Windows Imaging Component (WIC) API&lt;/FONT&gt;（DirectWriteとWICは部分的なサポート） &lt;/LI&gt;
&lt;LI&gt;センサー プラットフォーム API &lt;/LI&gt;
&lt;LI&gt;拡張言語サービス API &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#008000&gt;電源管理 API&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#008000&gt;アプリケーション再起動・リカバリー API&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#008000&gt;ネットワーク リスト マネージャ API&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#008000&gt;コマンドリンク コントロールとシステム定義シェル アイコン&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;ビルドには以下の環境が必要です。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;.NET Framework 3.5 以上、&lt;/LI&gt;
&lt;LI&gt;Windows SDK for Windows 7 RC&lt;/LI&gt;
&lt;LI&gt;DirectX SDK (March 2009)&lt;/LI&gt;&lt;/UL&gt;
&lt;H5&gt;D3D10チュートリアル ビルド時の注意&lt;/H5&gt;
&lt;P&gt;Direct3Dでビルドするときには、DirectX SDKのインクルード フォルダとライブラリ フォルダを[ツール]→[オプション]から[プロジェクトおよびソリューション]→[VC++ディレクトリ]で追加する必要があります。&lt;/P&gt;
&lt;P&gt;しかし、D3D10のサンプルをビルドしようとしたとき、なぜか「D3DX10.hが見つからない」というビルドエラーで失敗しました。Direct3DX10プロジェクトを右クリックして[プロパティ]を選び、[構成プロパティ]→[C/C++]→[全般]で、[追加のインクルード ディレクトリ]にDirectX SDKのインクルードフォルダ（C:\Program Files\Microsoft DirectX SDK (March 2009)\Include）を指定します。さらに[構成プロパティ]→[リンカ]で[追加のライブラリ ディレクトリ]にDirectX SDKライブラリフォルダ（C:\Program Files\Microsoft DirectX SDK (March 2009)\Lib\x86）を追加します。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/WindowsAPICodePackforMicrosoft.NETFram.9_B9CB/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/WindowsAPICodePackforMicrosoft.NETFram.9_B9CB/image_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/WindowsAPICodePackforMicrosoft.NETFram.9_B9CB/image_thumb.png" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/WindowsAPICodePackforMicrosoft.NETFram.9_B9CB/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;D3DTutorial09_WPFの結果。ライティングが指定されていないので暗い。&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9752025" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Win32/default.aspx">Win32</category></item><item><title>Windows 7 ホワイトペーパー</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/05/13/9608829.aspx</link><pubDate>Wed, 13 May 2009 08:04:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9608829</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9608829.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9608829</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/windows/aa904944.aspx"&gt;MSDN Windows デベロッパー センター&lt;/a&gt;で&lt;a href="http://msdn.microsoft.com/ja-jp/windows/dd262126.aspx"&gt;Windows 7 ホワイトペーパー&lt;/a&gt;（日本語）が公開されています。以下のようなDirect3D, Direct2D, DirectWriteやマルチタッチ、WIC、PUMAなどについてのホワイトペーパーが日本語で公開されています。英語版は昨年のPDC08で公開されたもので、ネイティブAPI（Win32）向けのものです。&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/windows/dd638005.aspx"&gt;Windows 7: タッチ テクノロジ&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/windows/dd631759.aspx"&gt;タッチとタブレット用の開発者向け Windows 拡張機能&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/windows/dd579104.aspx"&gt;メインストリーム アプリケーション向け Direct3D10&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/windows/dd579105.aspx"&gt;Direct3D 10.1 リモート レンダリング&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/windows/dd647497.aspx"&gt;Direct2D の紹介&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/windows/dd647273.aspx"&gt;Direct2D パフォーマンスの向上&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/windows/dd673458.aspx"&gt;DirectWrite の紹介&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/windows/dd579117.aspx"&gt;WIC 対応コーデックの作成方法&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/windows/dd692789.aspx"&gt;カメラの RAW イメージ形式向けのWindows Imaging Component コーデック ガイドライン&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/windows/dd637384.aspx"&gt;Windows 7 における Protected User Mode Audio (PUMA)&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9608829" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Windows API Code Pack for Microsoft .NET Framework (v0.85)</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/05/08/9595475.aspx</link><pubDate>Fri, 08 May 2009 04:13:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9595475</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9595475.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9595475</wfw:commentRss><description>&lt;p&gt;Windows 7 RCの公開に伴い &lt;a href="http://code.msdn.microsoft.com/WindowsAPICodePack"&gt;Windows API Code Pack&lt;/a&gt;がv0.85に更新されていました。内容は以下のとおりです。緑色がv0.8から追加された部分です。&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows 7 ライブラリを含む Windows Shell 名前空間オブジェクト、&lt;font color="#008000"&gt;既知のフォルダーと非ファイルシステム コンテナ &lt;/font&gt;&lt;/li&gt;    &lt;li&gt;Windows Vista と Windows 7 のタスクダイアログ &lt;/li&gt;    &lt;li&gt;WPF と Windows Forms での Windows 7 Explorer Browser Control のサポート &lt;/li&gt;    &lt;li&gt;シェル プロパティ システムのサポート &lt;/li&gt;    &lt;li&gt;Windows 7 タスクバー ジャンプリスト、アイコン オーバーレイ、プログレスバー用のヘルパー &lt;/li&gt;    &lt;li&gt;Windows Vista と Windows 7 コモン ファイル ダイアログのサポート（カスタム ファイル ダイアログを含む）&lt;/li&gt;    &lt;li&gt;&lt;font color="#008000"&gt;Direct3D 11.0とDXGI 1.0/1.1 APIのサポート&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#008000"&gt;センサー プラットフォーム API&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#008000"&gt;拡張言語サービス API&lt;/font&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;残念ながら、マルチタッチ APIはまだ含まれていません。&lt;/p&gt;  &lt;p&gt;Direct3D 11.0サポートというのが気になります...&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9595475" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>D3DImage チュートリアル ⑦ UIと制御の追加</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/04/27/9570425.aspx</link><pubDate>Mon, 27 Apr 2009 08:52:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9570425</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9570425.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9570425</wfw:commentRss><description>&lt;p&gt;D3DImageの上に半透明のメニューペインを追加し、自動回転の開始・停止用とワイヤーフレーム表示用のチェックボックスを２つ追加します。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;D3DRenderer.h&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;まず、レンダリング時に自動回転とワイヤーフレームのフラグを渡せるようにします。&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;VOID Render(&lt;span style="color: blue"&gt;bool&lt;/span&gt; b_AutoRotation, &lt;span style="color: blue"&gt;bool&lt;/span&gt; b_WireframeMode);&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;/span&gt;&lt;span style="font-size: 10pt" lang="EN-US"&gt;&lt;/span&gt;    &lt;p&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;D3DRenderer.cpp&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;それを基にレンダーステートを変更するようD3DRenderer.cppを編集します。&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;VOID Render(&lt;span style="color: blue"&gt;bool&lt;/span&gt; b_AutoRotation, &lt;span style="color: blue"&gt;bool&lt;/span&gt; b_WireframeMode)       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;{      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// Clear the backbuffer and the zbuffer        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;font color="#808080"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160; g_pd3dDevice-&amp;gt;Clear( 0, NULL,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;D3DCOLOR_ARGB( 0, 0, 0, 0 ), 1.0f, 0 );&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; &lt;/span&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// Begin the scene        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: blue"&gt;&amp;#160; if&lt;/span&gt;( SUCCEEDED( g_pd3dDevice-&amp;gt;BeginScene() ) )       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160; {      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: green"&gt;&amp;#160;&amp;#160;&amp;#160; // Setup the world, view, and projection matrices        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: green"&gt;&amp;#160;&amp;#160;&amp;#160; // SetupMatrices();        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; if&lt;/span&gt; (b_AutoRotation) SetupMatrices();       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; g_pd3dDevice-&amp;gt;SetRenderState(D3DRS_FILLMODE,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (b_WireframeMode) ? D3DFILL_WIREFRAME : D3DFILL_SOLID);       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; g_pd3dDevice-&amp;gt;SetRenderState(D3DRS_CULLMODE,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (b_WireframeMode) ? D3DCULL_NONE : D3DCULL_CCW);&lt;/span&gt;&lt;/p&gt;  &lt;h6&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;/span&gt;&lt;/h6&gt;  &lt;p&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt;&lt;/span&gt;    &lt;p&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;これだけでもよいのですが、もともとの回転が時間を基にしているため、一度回転を止めてから再開すると、ジャンプしてしまうので、SetupMatrices()も少し変更します。&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;VOID SetupMatrices()      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;{      &lt;br /&gt;&amp;#160;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;span style="color: green"&gt;// Set up world matrix        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160; D3DXMATRIX matWorld;      &lt;br /&gt;&amp;#160; &lt;/span&gt;&lt;span style="font-family: consolas; color: green; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;//&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;D3DXMatrixRotationY( &amp;amp;matWorld,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; timeGetTime() / 1000.0f );       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: blue"&gt;&amp;#160; static&lt;/span&gt; &lt;span style="color: blue"&gt;float&lt;/span&gt; angle = 0.0f;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160; D3DXMatrixRotationY( &amp;amp;matWorld, angle+=0.03f );&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt;&lt;/span&gt;    &lt;p&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt;&lt;/span&gt;    &lt;p&gt;&lt;strong&gt;D3DWrapper.cpp&lt;/strong&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt;&lt;/span&gt;    &lt;p&gt;ラッパーでは、前述のフラグをパブリック プロパティとして定義し、::Renderメソッド呼び出しの引数とします。&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;ref&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; D3DWrapper&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;{&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;private&lt;/span&gt;:       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;bool&lt;/span&gt; _rotation;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;bool&lt;/span&gt; _wireframe;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; &lt;/span&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;:&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160; D3DWrapper()      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160; {      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; _rotation = &lt;span style="color: blue"&gt;true&lt;/span&gt;;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; _wireframe = &lt;span style="color: blue"&gt;false&lt;/span&gt;;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160; }      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160; property&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; AutoRotate       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160; {      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; bool&lt;/span&gt; get() {&lt;span style="color: blue"&gt;return&lt;/span&gt; _rotation;}       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; void&lt;/span&gt; set(&lt;span style="color: blue"&gt;bool&lt;/span&gt; value) { _rotation = value;}       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160; }      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160; property&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; RenderWireframe       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160; {      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; bool&lt;/span&gt; get() {&lt;span style="color: blue"&gt;return&lt;/span&gt; _wireframe;}       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; void&lt;/span&gt; set(&lt;span style="color: blue"&gt;bool&lt;/span&gt; value) { _wireframe = value;}       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160; }&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;...&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;VOID Render(&lt;span style="color: blue"&gt;int&lt;/span&gt;% width, &lt;span style="color: blue"&gt;int&lt;/span&gt;% height)&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;::Render(_rotation, _wireframe);&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;width = SCREEN_WIDTH;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;height = SCREEN_HEIGHT;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;/span&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt; &lt;/span&gt;    &lt;p&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;strong&gt;Window1.xaml&lt;/strong&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt;&lt;/span&gt;    &lt;p&gt;XAMLでは、メニューを追加します。&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;StackPanel&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; HorizontalAlignment&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;=&amp;quot;Left&amp;quot;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; Width&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;=&amp;quot;100&amp;quot;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; Margin&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;=&amp;quot;5&amp;quot;&amp;gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;StackPanel.Background&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;SolidColorBrush&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; Color&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;=&amp;quot;Black&amp;quot;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; Opacity&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;=&amp;quot;0.3&amp;quot;/&amp;gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;StackPanel.Background&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;CheckBox&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; Name&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;=&amp;quot;Rot&amp;quot;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; Margin&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;=&amp;quot;5&amp;quot;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; Content&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;=&amp;quot;Rotation&amp;quot;      &lt;br /&gt;&amp;#160; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160; Foreground&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;=&amp;quot;White&amp;quot;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; Unchecked&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;=&amp;quot;RotationChanged&amp;quot;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Checked&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;=&amp;quot;RotationChanged&amp;quot;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; IsChecked&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;=&amp;quot;True&amp;quot; /&amp;gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;CheckBox&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; Name&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;=&amp;quot;Wire&amp;quot;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; Margin&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;=&amp;quot;5&amp;quot;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; Content&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;=&amp;quot;Wireframe&amp;quot;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Foreground&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;=&amp;quot;White&amp;quot;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; Unchecked&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;=&amp;quot;WireframeChanged&amp;quot;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Checked&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;=&amp;quot;WireframeChanged&amp;quot;&lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; IsChecked&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;=&amp;quot;False&amp;quot; /&amp;gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;StackPanel&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt; &lt;/span&gt;    &lt;p&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Window1.xaml.cs&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;コードビハインドのC#ではコールバックを実装し、前述のフラグをセットします。&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;private&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; RotationChanged(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;      &lt;br /&gt;{       &lt;br /&gt;&amp;#160; &lt;/span&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;CheckBox&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; c = sender &lt;span style="color: blue"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CheckBox&lt;/span&gt;;       &lt;br /&gt;&amp;#160; &lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;myD3DScene.AutoRotate = c.IsChecked.Value;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;} &lt;/span&gt;    &lt;p&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;/span&gt;    &lt;p&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;private&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; WireframeChanged(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt;)       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;{      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160; CheckBox&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt; c = sender &lt;span style="color: blue"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CheckBox&lt;/span&gt;;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&amp;#160; myD3DScene.RenderWireframe = c.IsChecked.Value;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;}&lt;/span&gt;&lt;/p&gt;  &lt;h5&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;/span&gt;&lt;/h5&gt;  &lt;h5&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;/span&gt;&lt;/h5&gt;  &lt;p&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes; mso-bidi-font-size: 12.0pt" lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;F5キーを押してデバッグ実行してください。以下のようにメニュー付きでトラが回転します。Rotationをオフにすると回転が止まります。Wireframeをオンにするとワイヤーフレームのトラになります。&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/D3DImageUI_D4BB/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/D3DImageUI_D4BB/image_thumb.png" width="244" height="194" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;これら以外にも、マウスでの座標変換などのいろいろな制御も可能でしょう。WPFなので、コントロールテンプレートを変更してもっとかっこいいメニューにすることもできるでしょう。使いやすいUIをWPFで、高速な3DをDirect3Dでという組み合わせは、なかなか便利だと思います。&lt;/p&gt;  &lt;p&gt;完成したプロジェクトは「&lt;a href="http://blogs.msdn.com/hiroyuk/archive/2009/03/30/9517928.aspx"&gt;第0回はじめに&lt;/a&gt;」にあります。&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9570425" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+Presentation+Foundation/default.aspx">Windows Presentation Foundation</category></item><item><title>D3DImage チュートリアル ⑥ C#の編集</title><link>http://blogs.msdn.com/hiroyuk/archive/2009/04/23/9563996.aspx</link><pubDate>Thu, 23 Apr 2009 08:01:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9563996</guid><dc:creator>hiroyuk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/hiroyuk/comments/9563996.aspx</comments><wfw:commentRss>http://blogs.msdn.com/hiroyuk/commentrss.aspx?PostID=9563996</wfw:commentRss><description>&lt;p&gt;コードビハインドでは、D3DWrapper.cppで実装したD3DWrapperクラスをコンストラクトして、Initialize（およびInitGeometry）, Render, Cleanupを呼び出すメソッドを実装します。&lt;/p&gt;  &lt;p&gt;StartDXRenderingメソッドはInitialize（およびInitGeometry）を呼び出し、D3DImageとD3DSurfaceとを対応付け、レンダリング用のイベントハンドラーを定義します。&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;private&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="color: blue"&gt;readonly&lt;/span&gt; &lt;span style="color: #2b91af"&gt;D3DWrapper&lt;/span&gt; myD3DScene = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;D3DWrapper&lt;/span&gt;();&lt;/span&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;private&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; StartDXRendering()       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;{      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; if&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; (!myD3DImage.IsFrontBufferAvailable)      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; return&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; IntPtr&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; scene =      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; myD3DScene.Initialize(       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;WindowInteropHelper&lt;/span&gt;(&lt;span style="color: blue"&gt;this&lt;/span&gt;).Handle);       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; myD3DScene.InitGeometry();      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; myD3DImage.Lock();      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; myD3DImage.SetBackBuffer(      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;D3DResourceType&lt;/span&gt;.IDirect3DSurface9, scene);       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; myD3DImage.Unlock();&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; CompositionTarget&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;.Rendering +=      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;EventHandler&lt;/span&gt;(OnRendering);       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;}&lt;/span&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;StopRenderingメソッドはCleanupを呼び出し、StartDXRenderingで定義したイベントハンドラーを削除します。&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; color: blue; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;private&lt;/span&gt;&lt;span style="font-family: consolas; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; StopDXRendering()       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;{      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #2b91af; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; CompositionTarget&lt;/span&gt;&lt;span style="font-family: consolas; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;.Rendering -= OnRendering;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; myD3DScene.Cleanup();      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;}&lt;/span&gt;&lt;span style="font-size: 9pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;OnRenderメソッドはD3DImageをロックし、Renderを呼び出し、D3DImage.AddDirtyRectを呼び出してから（書き込む範囲を決める）、ロック解除します。このメソッドはレンダリング可能な時いつも呼び出されます。&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;void&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; OnRendering(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;{      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; if&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; (!myD3DImage.IsFrontBufferAvailable)      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; return&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; myD3DImage.Lock();      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; int&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; width = 0, height = 0;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; myD3DScene.Render(&lt;span style="color: blue"&gt;ref&lt;/span&gt; width, &lt;span style="color: blue"&gt;ref&lt;/span&gt; height);       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; myD3DImage.AddDirtyRect(&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Int32Rect&lt;/span&gt;(0, 0, width, height));       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; myD3DImage.Unlock();      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;}&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;残りは、XAMLで宣言したイベントハンドラーのコールバックを実装するだけです。Load時にはStartDXRenderingを呼び出し、フロントバッファの状態が変化したときは、IsFrontBufferAvailableをチェックして、StartDXRenderingかStopDXRenderingを呼び出します。&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;private&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Window_Loaded(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender,&lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;      &lt;br /&gt;{       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; StartDXRendering();      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;}&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;private&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; myD3DImage_IsFrontBufferAvailableChanged(       &lt;br /&gt;&amp;#160; &lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;DependencyPropertyChangedEventArgs&lt;/span&gt; e)       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;{      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; if&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt; (myD3DImage.IsFrontBufferAvailable)      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; {      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; StartDXRendering();      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; }      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; else      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; {      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160; StopDXRendering();      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;&amp;#160; }      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang="EN-US"&gt;}&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;これでひとまず完成です。F5キーを押してデバッグ実行してください。以下のようにSample Browserからインストールした同じトラが回転しているはずです。D3DRenderer.cppのRenderメソッドにブレークポイントを追加すれば、ネイティブCPPのデバッグもできます！&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/D3DImageC_FE30/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/hiroyuk/WindowsLiveWriter/D3DImageC_FE30/image_thumb.png" width="244" height="194" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;次回は、WPFでメニューを作成して、Direct3Dのレンダリングを制御してみましょう。&lt;/p&gt;  &lt;p&gt;つづく&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9563996" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Direct3D/default.aspx">Direct3D</category><category domain="http://blogs.msdn.com/hiroyuk/archive/tags/Windows+Presentation+Foundation/default.aspx">Windows Presentation Foundation</category></item></channel></rss>