The UpdateViewport function updates the viewport in response to a change in window size. This ensures that we render at a resolution that matches the client area of the target window.
static HRESULT
UpdateViewport(void)
{
D3DVIEWPORT d3dViewport;
ASSERT(NULL != lpd3dViewport);
ZeroMemory(&d3dViewport, sizeof(d3dViewport));
d3dViewport.dwSize = sizeof(d3dViewport);
d3dViewport.dwX = 0;
d3dViewport.dwY = 0;
d3dViewport.dwWidth = (DWORD)rSrcRect.right;
d3dViewport.dwHeight = (DWORD)rSrcRect.bottom;
d3dViewport.dvScaleX = D3DVAL((float)d3dViewport.dwWidth / 2.0);
d3dViewport.dvScaleY = D3DVAL((float)d3dViewport.dwHeight / 2.0);
d3dViewport.dvMaxX = D3DVAL(1.0);
d3dViewport.dvMaxY = D3DVAL(1.0);
return lpd3dViewport->lpVtbl->SetViewport(lpd3dViewport,
&d3dViewport);
}