Как отобразить материал на закадровую поверхность?

#directx #directx-9

Вопрос:

Теперь у меня есть закадровая поверхность, g_pSurface. У меня также есть материал, CenterMtrl. Я хочу отобразить CenterMtrl на g_pSurface. Код выглядит так:

 bool Display(float timeDelta)
{
    if( Device )
    {
        //
        // Render
        //
        Device->Clear(0, 0, D3DCLEAR_TARGET, 0x00000000, 1, 0);

        Device->UpdateSurface(g_pTextureSurface, NULL, g_pBackBuffer, NULL);
        Device->BeginScene();
        
        D3DXMATRIX W;
        D3DXMatrixIdentity(amp;W);
        
        //Device->SetTransform(D3DTS_WORLD, amp;W);
        
        D3DXMatrixScaling(amp;W, 1.5f, 1.5f, 1.5f);
        D3DXMatrixTranslation(amp;W, 1, 1, 0);
        Device->SetTransform(D3DTS_WORLD, amp;W);
        Device->SetMaterial(amp;CenterMtrl);
        SetBlendRenderState(Device, 0, amp;CenterMtrl);
        Device->SetTexture(0, 0);
        Device->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, vMtrl, sizeof (Vertex));
        ResetBlendenderState(Device);

        Device->EndScene();
        Device->Present(0, 0, 0, 0);
    }
    return true;
}
 

Это прекрасно работает.
Но я хочу сначала отобразить CenterMtrl, а затем обновить поверхность.

 Device->Clear(0, 0, D3DCLEAR_TARGET, 0x00000000, 1, 0);
Device->BeginScene();
//the code same to above
Device->SetMaterial(amp;CenterMtrl);
//the code same to above
Device->EndScene();
Device->UpdateSurface(g_pTextureSurface, NULL, g_pBackBuffer, NULL);
Device->Present(0, 0, 0, 0);
 

Но, если я это сделаю, то CenterMtrl будет пропущен. Я думаю, что из-за обновлений поверхность покрывает центральную область. Как я мог это сделать ????