.NET 4.0 + C# + VS2010でManaged DirectXを使う

日を改めて調べて見たら案外あっさり解決策が見つかったのでメモ。

  1. プロジェクトの参照設定でMDXのDLLを追加する
    • C:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2902.0 以下
  2. app.configを以下の用に書き換える
    • <startup useLegacyV2RuntimeActivationPolicy="true"> ...

これでDirectXC# on .NET Framework 4.0から使えるように!DirectX.AudioVideoPlayback.Audioで綺麗に音が多重再生できるようになった。やったね!

追記

こんなのもあった。Windows® API Code Pack for Microsoft® .NET Framework - Home (via C#からDirect3Dを使う第3の方法 - Tari Lari Run)
なんでいままで見つけられなかったんだ…

わくわくするルーレット「わくわくルーレット」を作った

わくわくルーレットというソフトを作りました。

説明やらダウンロードやらはこちらから
わくわくルーレット
バグ報告やら要望やらはこちらへどうぞ
【わくわく】わくわくルーレットサポートスレッド【するの?】 - Greasemonkey等サポート掲示板

ソフトの命名は某コミュ向けの内輪ネタなんですが,ソフト自体は割と汎用的なんでこちらでも紹介した次第です。用途としては,電凸で会話などするニコ生で話題を選ぶ時に使ったりすると良いかなと。

姉妹ソフト
ルーレットが楽しめるソフト「わくわくルーレット」 : ゆきちゃんのソフトウェアなページ
インスパイアされたソフト
罰ゲームルーレットの詳細情報 : Vector ソフトを探す!

以下どうでもいい言い訳と感想

ルーレット中に「ピッピッピッ」と音が鳴るようにしたんですが、.NETデフォルトの機能だと音声の同時再生ができないみたいで、ブツブツ途切れてしまいます。解決するにはDirectXを使わなきゃいけないらしく、500MBもあるSDK落としてきてインストールしたけど .NET 4.0 から使えるようにするにはまた別のSDK (SlimDX) が必要だとか。しかもそれは開発者が入れるだけでは駄目で、アプリ使用者もなんかインストールしなきゃいけないっぽい。こんなソフトの為に何かインストールさせるのもアレだなあと思って結局音声は諦めた。Managedじゃないコードからアクセスするやり方もあるっぽいけど、諦めた。音声って意外と難しいんだな…。Flashくらい気軽に使えると思ったのに。Silverlightだとまた違うんだろうか。
今回 Visual Studio 2010 + .NET Framework 4.0 + C# 4.0 + WPF って環境でアプリ作ったんですが、VS2005と比較するとXAMLアプリがものすごく作りやすくなっていて驚いた。あとはStyleのSetterでプロパティと値の補完ができるようになれば個人的には完全に満足。
相変わらずXAMLはすごく柔軟でなんでもできるけど、実際それほどなんでもできない気もした。複雑で全容を把握できない!仕様もちょっとは分かったけど把握できない!MSDN重い!難しい!そんなXAMLのせいで「C#でコード書いたら負けだと思う病」にかかってしまい、結構無駄な時間を費やしてしまった気がするwまあ楽しかったからいいか。
そんなこんなで久しぶりのC#開発、初めてのGUIアプリの公開でした。C#Javaよりも断然素敵だと思いました。varとかlambdaとか。他にも色々。varを多用したC#のコードはパッと見JavaScriptみたいで大変親しみを感じました。まる。