人気ブログランキング | 話題のタグを見る
OpenGLでビットマップ画像データを背景に描画
以前、DirectShowでキャプチャしたカメラ画像を
OpenGLの背景に差し込んだ時の、テストコードの一端。
めも。

void DrawVideo(DShowCapture* vcap)
{
if(vcap)
{
// メモリ確保は起動時1回だけ
// シンクロが必要かも
static long nDataSize = 640 * 480 * 3; //vcap->GetBufferSize();
static long* pbData = (long*)new BYTE[nDataSize];
static BITMAPINFO bmi;
if(vcap->CopyFrameData(pbData, nDataSize, &bmi))
{
// glDrawPixels をコールするときには、PROJECTIONマトリックスを
// 初期化しないと画面に表示されない。(普通の画面の場合)
// その後、DEPTHバッファをクリアすれば、画像を背景に
// OpenGLでレンダリングが出来る
GLint oldMatrixMode;
glGetIntegerv(GL_MATRIX_MODE, &oldMatrixMode);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glPixelZoom(1,1);
glRasterPos2i(-1 , -1);
glDrawPixels(640 , 480 , GL_BGR_EXT , GL_UNSIGNED_BYTE , pbData);
glPopMatrix();
glMatrixMode(oldMatrixMode);
glClear(GL_DEPTH_BUFFER_BIT);
}
else
{
//MessageBox(0, "can't get image", "fakegl", MB_OK);
}

//delete [] pbData;
}

}

ソニーストア

by isoq | 2011-03-03 11:35 | 3Dグラフィックス
<< 東日本大震災 Firefox + Greas... >>