前へ 第02章 エフェクト機能を使って表示する 次へ

ソース 実行ファイル
dx8_2d02.cpp dx8_2d02.exe

今回は多彩なエフェクト機能を利用して表示してみます。
拡大・縮小・回転・半透明です。



//-----------------------------------------------------------------------------
//描画処理
//-----------------------------------------------------------------------------
VOID Render()
{
	RECT		ptn;
	if( NULL == g_pd3dDevice )
	return;

	//画面全体を指定色でクリア
	g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,0), 1.0f, 0 );
	//BeginScene関数の後で始めて描画が出来る
	g_pd3dDevice->BeginScene();
    
	//スプライト描画開始の合図
	m_pSprite->Begin();
	ptn.top=0;
	ptn.bottom=32;
	ptn.left=0;
	ptn.right=32;
	//通常表示
	m_pSprite->Draw(texture, &ptn[0], NULL, NULL, NULL,
		&D3DXVECTOR2(32, 32),D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f));
	//拡大表示
	m_pSprite->Draw(texture, &ptn[1], &D3DXVECTOR2(2, 2), NULL, NULL,
		&D3DXVECTOR2(64, 64),D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f));
	//回転表示
	m_pSprite->Draw(texture, &ptn[2], NULL, NULL, 0.4f,
		&D3DXVECTOR2(24, 64),D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f));
	//半透明表示
	m_pSprite->Draw(texture, &ptn[3], NULL, NULL, NULL,
		&D3DXVECTOR2(96, 48),D3DXCOLOR(1.0f, 1.0f, 1.0f, 0.5f));
	//すべて使用
	m_pSprite->Draw(texture, &ptn[4], &D3DXVECTOR2(3, 3), &D3DXVECTOR2(48, 48), 2.5f,
		&D3DXVECTOR2(32, 48),D3DXCOLOR(1.0f, 1.0f, 1.0f, 0.5f));
	//スプライト描画終了の合図
	m_pSprite->End();

	//EndScene関数で描画が終了
	g_pd3dDevice->EndScene();
	//裏画面から表画面へ転送
	g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
このようにスプライト系関数を使うと非常に簡単に描画できますが
Draw命令は毎回中でDrawPrimitiveを読み出しているらしく
画面いっぱいにスプライトを描画すると凄く遅くなってしまいます。
と言う事で2Dゲームでの背景描画等には向きません。
高速なCopyRects命令があるのでそちらを次回説明します。