フォト

Google AdSense


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

« 疲れてるのかなぁ | トップページ | 今回のことで »

2008.04.27

解像度やフレームレート設定

先日アップしたキャプチャテクスチャのDirect3D10版ですが、ソースとバイナリを更新しました。

キャプチャデバイスの解像度やフレームレート設定が切り替えできなかったのは、単純な凡ミスでした。今回のものから初期化時にキャプチャデバイスの解像度とフレームレート設定が出来ます。

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

一応、簡単な説明。

必要なのは、いつものようにDirectShowのBaseClassesです。これは、Visual Studioに付属しないので別途Windows SDK(旧称Platform SDK)を入手してビルドしてください。ビルド方法は、ネットなどにあると思いますが、下記も参考になるかも知れません。なお、Windows SDKは下記で紹介しているもの(バージョン、6.0で、現在の最新は6.1)より1つ新しいものが出ています。

http://www.shader.jp/xoops/html/modules/xfsection/article.php?articleid=27

CaptureTexture10.hとCaptureTexture10.cppにキャプチャテクスチャの処理があります。CaptureTexture10.hをインクルードする場合の注意ですが、DXUTを使う場合、DXUT.hより上にインクルードしてください。

使うクラスは、CCaptureTexture10です。

CCaptureTexture10::InitDShowTextureRenderer()からスタートです。これは従来と同じく2種類の同名の関数があります。それぞれ、デバイス名かデバイスID(PCに接続されてるキャプチャデバイスの順序)で起動します。手っ取り早いのは、デバイスID版でiIDに0を入れることです。

デバイス名は、使いたいキャプチャデバイスが決まってる場合ですね。

CAMERA_CONFIGには、解像度とフレームレート設定ができます。初期化時しかこの辺は設定できません。起動後はテクスチャの再生成などが生じて面倒なので、変更には対応していません(クラスのインスタンスを破棄するなどして作り直してください)。

PlayとStopで再生と停止です。

GetTexture()でID3D10Texture2Dが取れますが、Direct3D10ではID3D10ShaderResourceViewが欲しいので、それはGetShaderResourceView()で取得が可能です。

それと、EnumVideoCaptureDevices()関数というのをがあります。これの戻り値は、使えるキャプチャデバイス数で、引数にはデバイス名の配列が入ってきます。事前に使えるデバイスを列挙したい場合に使ってください。

« 疲れてるのかなぁ | トップページ | 今回のことで »

Programming」カテゴリの記事

コメント

コメントを書く

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

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

« 疲れてるのかなぁ | トップページ | 今回のことで »