#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 будет пропущен. Я думаю, что из-за обновлений поверхность покрывает центральную область. Как я мог это сделать ????