/// Render the imposter.
/// ** BEWARE ** this is the inefficient imposter rendering method and is for example only.
void RenderImposter(RenderTexture* pImposterRenderTexture, Imposter* pImposter)
{
	// Bind the imposter texture.

	LPDIRECT3DDEVICE9 pD3DDevice = DXUTGetD3DDevice();
	pD3DDevice->SetTexture(0, pImposterRenderTexture->GetD3DTexture());

	// Set world-tranform to identity (imposter billboard is already in world-space).

	D3DXMATRIX identity;
	D3DXMatrixIdentity(&identity);
	pD3DDevice->SetTransform(D3DTS_WORLD, &identity);

	// Setup render state.

	pD3DDevice->SetRenderState(D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_COLOR1);
	pD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
	pD3DDevice->SetRenderState(D3DRS_FOGENABLE, TRUE);
	pD3DDevice->SetRenderState(D3DRS_FOGTABLEMODE, D3DFOG_EXP2);
	pD3DDevice->SetRenderState(D3DRS_FOGCOLOR, FOG_COLOUR);
	pD3DDevice->SetRenderState(D3DRS_FOGDENSITY, FloatToDWORD(FOG_DENSITY));
	pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
	pD3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
	pD3DDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
	pD3DDevice->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE);
	pD3DDevice->SetRenderState(D3DRS_ALPHAREF, 0);
	pD3DDevice->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATER);
	pD3DDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
	pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_DIFFUSE);
	pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_TEXTURE);
	pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
	pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE);
	pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_TEXTURE);
	pD3DDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_POINT);
	pD3DDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_POINT);

	// Render the imposter

	int vertFVF = D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1;
	int stride = sizeof(ImposterVertex);
	pD3DDevice->SetFVF(vertFVF);
	pD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLELIST, 2, pImposter->verts, stride);
}