準備
荒川くんの用意してくれたプログラムを利用する。
mrip\trunk\directx
の中にある[ShowXFile_base20100511]というプログラムを改良したプログラムを
mrip\trunk\opencv\OpenCV_ShowXFile_base20100511
に作成した。SVNを最新のものに更新して、利用してください。
解説
基本的には動作確認用のプログラムでフレームの画像をテクスチャにコピーしているだけです。
コピーするための関数。
void replaceTexture(LPDIRECT3DTEXTURE9 pTexture, IplImage *pPanoImg)
{
D3DLOCKED_RECT pLockedRect;
pTexture->LockRect(0, &pLockedRect, NULL, 0); // ロック
unsigned long data; //32bit
unsigned long r, g, b, a;
unsigned long *to = (unsigned long*)pLockedRect.pBits;
for(UINT y=0; y < (unsigned int)pPanoImg->height; y++)
{
for(UINT x=(unsigned int)pPanoImg->width; x > 0 ; x--)
{
// 初期化
data = r = g = b = 0;
// B
b = *(pPanoImg->imageData + (pPanoImg->width*y + x-1) * 3 + 0);
data += b;
// G
g = *(pPanoImg->imageData + (pPanoImg->width*y + x-1) * 3 + 1);
g <<= 8;
data += g;
// R
r = *(pPanoImg->imageData + (pPanoImg->width*y + x-1) * 3 + 2);
r <<= 16;
data += r;
// A
a = 0;
a <<= 24;
data += a;
*to++ = data;
}
}
pTexture->UnlockRect(0); // アンロック
}
この関数が原因で、現在のプログラムではうまくコピー出来ていないらしい。
誰かにこの関数を直して欲しい。(加藤くん辺りに(ぇ
コメント
最終更新:2010年05月17日 02:09