GetBackBuffer

Last-modified: 2009-01-09 (金) 23:07:01

Direct3Dで描いたバックバッファのHDC(デバイスコンテキストハンドル)を持ってきてBitBltでウィンドウに送るときのメモ。

LPDIRECT3DDEVICE9にGetBackBufferを設定

LPDIRECT3DDEVICE9 pDevice;
	~
	pDevice->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&pBackBuffer);

HDCを設定

HDC hDC;	// ウィンドウのHDC
HDC hCompatDC;	// Direct3DのほうのHDC
	~
	// ウィンドウのアップデート処理( UpdateWindow (hWnd); )
	// ウィンドウのデバイスコンテキストハンドルを取得する
	hDC = GetDC(hWnd);
	// メモリデバイスコンテキストを作成する
	hCompatDC = CreateCompatibleDC(hDC);
	~

画面に送る

LPDIRECT3DSURFACE9 pBackBuffer = NULL;
	~
	// 描画処理の後
	// D3Dで描いたバックバッファを持ってくる
	pBackBuffer->GetDC(&hCompatDC);
	// BitBltでウィンドウにバックバッファを送る
	BitBlt( hDC, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, hCompatDC, 0, 0, SRCCOPY );
	// バックバッファを初期化
	pBackBuffer->ReleaseDC(hCompatDC);
	~