フォト

Google AdSense

  • AdSense
無料ブログはココログ

« できた | トップページ | DirectX 9.0時代と比べて »

2008.04.25

Direct3D10でキャプチャテクスチャα版

まだまだソースには手を入れるので、これが完成版ではないのですがとりあえず動いているものを下記にアップしておきます。バイナリも付属してますので、Windows Vista(Direct3D10が動く環境)にWebカメラ(最近のノートPCなら内蔵カメラでも可)を接続すれば動くと思います。

http://www.shader.jp/xoops/html/modules/mydownloads/singlefile.php?cid=5&lid=21

動作に必要なもの
Windows Vista
Direct3D10が動く環境(March 2008)
Visual Studio 2005 SP1の再頒布パッケージ適用済み

ビルドに必要なもの
DirectX SDK(March 2008)
Windows SDK 6.1(6.0でも大丈夫だと思います)

現時点では、IAMStreamConfigまわりの挙動がおかしかったので止めてます。ですので、カメラの解像度やフレームレート設定が出来てません。これは後々対応します(それほど大変ではないので)。

CCaptureTexture10::CopyMediaSample()関数が実際に、GPU側へ転送を行うところなのですが、ここでは

・D3D10_USAGE_STAGING(CPUで読み書き出来ないけど、GPUのパイプラインからアクセスできない)のテクスチャを生成
・このテクスチャをmapしてキャプチャしたフレームを書き込む
・D3D10_USAGE_DEFAULTでD3D10_BIND_SHADER_RESOURCEなテクスチャ(GPUのパイプラインから読み出し可能だけどCPUでアクセス不可)へ上のテクスチャを転送。ID3D10Device::CopyResource()を利用

のようなことをしております。最初、GPUのパイプラインからさわれるテクスチャをmapして書き換えてたのですが、これはプログラムがクラッシュ(GPUドライバが)して危険なんでやめました。

まだまだ、完成ではないのでソースに不備とかありますが、ご意見などありましたらコメントやメールでください。ビルドできないとか、DirectShowの環境構築とか動かないとかそういう質問は、ご遠慮ください(現状、DirectShowが不慣れな方がいじる状況ではないので)。

あと、今回の件で、たぶんCUDA化も問題なさそうです。CUDA化するメリットは、個人的にはOpenGLでの利用時に便利なんじゃないかと思います(ただし、DirectShowなのでWindows限定)。

Webcam
クリックすると大きなサイズになります

« できた | トップページ | DirectX 9.0時代と比べて »

Programming」カテゴリの記事

画像付き」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« できた | トップページ | DirectX 9.0時代と比べて »