コード例 #1
0
ファイル: AtgPostProcess.cpp プロジェクト: 0xdeafcafe/Yrs2013
//--------------------------------------------------------------------------------------
// Name: DrawScreenSpaceQuad()
// Desc: Draw a viewport-aligned quad using screen-space coordinates
//--------------------------------------------------------------------------------------
VOID PostProcess::DrawScreenSpaceQuad( FLOAT w, FLOAT h, FLOAT fMaxU, FLOAT fMaxV )
{
    // Make sure that the required shaders and objects exist
    assert( m_pQuadVtxDecl );
    assert( m_pScreenSpaceVS );

    // Define vertices for the screen-space rect
    XMFLOAT4 v[3];
    v[0] = XMFLOAT4( 0, 0, 0.0f, 0.0f );
    v[1] = XMFLOAT4( w, 0, fMaxU, 0.0f );
    v[2] = XMFLOAT4( 0, h, 0.0f, fMaxV );

    // Set states for drawing the quad
    PushRenderState( D3DRS_VIEWPORTENABLE, FALSE );
    PushRenderState( D3DRS_ZENABLE, FALSE );
    PushRenderState( D3DRS_CULLMODE, D3DCULL_CCW );
    PushRenderState( D3DRS_HALFPIXELOFFSET, TRUE );

    // Draw the quad
    g_pd3dDevice->SetVertexDeclaration( m_pQuadVtxDecl );
    g_pd3dDevice->SetVertexShader( m_pScreenSpaceVS );
    g_pd3dDevice->DrawPrimitiveUP( D3DPT_RECTLIST, 1, v, sizeof( v[0] ) );

    PopRenderStates();
}
コード例 #2
0
ファイル: GPC_Canvas.cpp プロジェクト: OldBrunet/BGERTPS
void GPC_Canvas::DrawAllBanners(void)
{
	if(!m_bannersEnabled || (m_banners.size() < 1))
		return;
	
	// Save the old rendering parameters.

	CanvasRenderState render_state;
	PushRenderState(render_state);

	// Set up everything for banner display.
	
	// Set up OpenGL matrices 
	SetOrthoProjection();
	// Activate OpenGL settings needed for display of the texture
	::glDisable(GL_LIGHTING);
	::glDisable(GL_DEPTH_TEST);
	::glDisable(GL_FOG);
	::glEnable(GL_TEXTURE_2D);
	::glEnable(GL_BLEND);
	::glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

	TBannerMap::iterator it = m_banners.begin();
	while (it != m_banners.end()) {
		if (it->second.enabled) {
			DrawBanner(it->second);
		}
		it++;
	}

	PopRenderState(render_state);
}
コード例 #3
0
ファイル: AtgPostProcess.cpp プロジェクト: 0xdeafcafe/Yrs2013
//--------------------------------------------------------------------------------------
// Name: DrawFullScreenQuad()
// Desc: Draw a viewport-aligned quad covering the entire render target
//--------------------------------------------------------------------------------------
VOID PostProcess::DrawFullScreenQuad()
{
    // Make sure that the required shaders and objects exist
    assert( m_pQuadVtxDecl );
    assert( m_pQuadVB );
    assert( m_pScreenSpaceVS );

    // Set states for drawing the rect
    PushRenderState( D3DRS_VIEWPORTENABLE, TRUE );
    PushRenderState( D3DRS_ZENABLE, FALSE );
    PushRenderState( D3DRS_CULLMODE, D3DCULL_CCW );
    PushRenderState( D3DRS_HALFPIXELOFFSET, TRUE );

    // Draw the rect
    g_pd3dDevice->SetVertexDeclaration( m_pQuadVtxDecl );
    g_pd3dDevice->SetVertexShader( m_pScreenSpaceVS );
    g_pd3dDevice->SetStreamSource( 0, m_pQuadVB, 0, sizeof( XMFLOAT4 ) );
    g_pd3dDevice->DrawPrimitive( D3DPT_RECTLIST, 0, g_dwNumQuadsInGrid );

    PopRenderStates();
}