Azure Kinect SDK を (まだ開発中のライブラリを使って)C# で使う

まだ開発中みたいですが、一応C#用のラッパーなプロジェクトができてます。

ビルドの仕方

  1. GitHubのfeature/csharpブランチをとってきます。
  2. Azure Kinect SDKのwindows-desktop用バイナリがあるパスを K4aBinaryDirectory 環境変数に設定します。
    image
  3. src\csharp フォルダーにあるk4a.propsファイルの中身からImport Project要素だけ残してバッサリ消します。(※そのままだとK4aBinaryDirectoryにファイルをコピーしようとするので。SDKからビルドするような人であれば環境変数のパスをそっちに合わせておけばアクセス拒否なエラーとかはないでしょうけど)
  4. ソリューションを開いてビルドします。WPFならMicrosoft.Azure.Kinect.Sensor.Examples.WPFViewerをビルドすればだいたいいける。ただ出力パスが変になってるかもしれないのでプロジェクトのプロパティを開いて適宜修正しましょう。

だいたいこんな感じでとりあえずビルドできます。なおSDKがx64用のアセンブリになってるはずなのでビルド時はx64にしましょう。

とりあえずEXEが出来上がるので動作確認したかったけど実機がないので試せません。(mkvファイル使ったPlaybackが簡単だったらいいんだけどエミュレーションしてくれるわけじゃないので面倒くさい)
なおC#用のラッパーなSDKはnetstandard2.0みたいなので.NET Coreでもいけるんじゃないかな。まだ試してないけど。

Visual Studio でハードウェア グラフィックアクセラレーターが使われない

Visual Studioのオプションに以下のような設定があります。

image

[クライアントのパフォーマンスに基づいて視覚的効果を自動的に調整する]

項目名の通りの機能ですが、ハードウェアグラフィックアクセラレーター(GPU)がある場合でも、下にある補足説明(Visual Studioでは現在、ソフトウェアレンダリングが使用されています~)の通りソフトウェアレンダリングが使用される場合があります。

※ハードウェアアクセラレーターによるレンダリングが有効な場合は以下のような表示になります
image

どうもKnown Issueということで、Hyper-Vが有効な一部の環境でうまく判別できないらしいです。今後に期待したいところですがとりあえずVisual Studioの描画がもっさりしてるな?と思う方は上記オプションを調整してみたら改善するかもしれません。