milcore.dll on Windows XP

各所で話題になっていますが,Microsoft .NET Framework 3.0 再頒布可能パッケージ がリリースされたので,Windows XP SP2 環境に一足先にインストールしてみました.



.NET Framework 3.0 には Windows Presentation Foundation (WPF) が含まれ,WPF は Media Integration Layer (MIL) 経由で Direct3D 9 を活用することから,前述の再頒布可能パッケージをインストールすることで,Windows XP 環境にも MIL のランタイムライブラリである milcore.dll が導入されます*1




Windows XP 以降の環境では,一足先に .NET Framework 3.0 と Internet Explorer 7.0RTM が出そろったことで,id:NyaRuRu:20061027#p1 で紹介した Image Search β for Windows Vista や,川西さんのblog で紹介されているteapot デモも一応の正式環境で実行できるようになりました.
私も何か作ってみようということで,先日の Microsoft Community Ring Day で拝見した InkCanvas のデモ を参考に,こういうのを作ってみました.

http://www.dwahan.net/nyaruru/hatena/inkcanvastest.xaml (ブラウザから起動できない場合は,一旦ローカルにダウンロードしてから実行してみてください)
右の白い領域に描いたものが左の板のテクスチャになります.


さらに,Windows XP 環境での WPF アプリケーションは,せいぜい「古き良き Direct3D 9 アプリケーション」ですので,当然 PIX for Windows でプロファイリングを行うことができます.

ちなみに実行させているのは XamlPadX で,先ほどの teapot サンプルを読み込んでいます.
頂点バッファは動的一本のみで毎フレーム頂点バッファとインデクスバッファを Lock していたり (teapot データすら動的頂点バッファに毎回書き込まれる),プリミティブ数個の DrawPrimitive を恐れずに使っていたりと,意外とごり押しな実装であることが分かります.ただし Shader は (うちの GeForce 6800 環境では) きちんと Shader Model 3.0 を利用していました.
PIX が使えるかどうか微妙な Windows Vista 環境より,使い慣れた Direct3D 9 で動く Windows XP 環境の方が,WPF の奥を眺めるには向いているかもしれませんね.
(追記) Windows Vista RC-2 で試してみましたが,PIX for Windows でキャプチャできてますね.ちょっとびっくり.

*1:MIL はソフトウェア描画モードを持っているため,必ずしも Direct3D 9 または Direct3D 9Ex が必須というわけではありません.あった方がベターですけど.