Функция экрана печати:
HRESULT hr;
LPDIRECT3DSURFACE8 lpSurface;
D3DSURFACE_DESC stSurfaceDesc;
if (FAILED(hr = ms_lpd3dDevice->GetBackBuffer(0, D3DBACKBUFFER_TYPE_MONO, &lpSurface)))
{
TraceError("Failed to get back buffer (0x%08x)", hr);
return false;
}
if (FAILED(hr = lpSurface->GetDesc(&stSurfaceDesc)))
{
TraceError("Failed to get surface desc (0x%08x)", hr);
SAFE_RELEASE(lpSurface);
return false;
}
UINT uWidth = stSurfaceDesc.Width;
UINT uHeight = stSurfaceDesc.Height;
switch( stSurfaceDesc.Format ) {
case D3DFMT_R8G8B8 :
case D3DFMT_A8R8G8B8 :
case D3DFMT_X8R8G8B8 :
case D3DFMT_R5G6B5 :
case D3DFMT_X1R5G5B5 :
case D3DFMT_A1R5G5B5 :
break;
case D3DFMT_A4R4G4B4 :
case D3DFMT_R3G3B2 :
case D3DFMT_A8R3G3B2 :
case D3DFMT_X4R4G4B4 :
case D3DFMT_A2B10G10R10 :
TraceError("Unsupported BackBuffer Format(%d). Please contact Administrator.", stSurfaceDesc.Format);
SAFE_RELEASE(lpSurface);
return false;
}
D3DLOCKED_RECT lockRect;
if (FAILED(hr = lpSurface->LockRect(&lockRect, NULL, D3DLOCK_NO_DIRTY_UPDATE | D3DLOCK_READONLY | D3DLOCK_NOSYSLOCK)))
{
TraceError("Failed to lock the surface (0x%08x)", hr);
SAFE_RELEASE(lpSurface);
return false;
}
Ошибка:
if (FAILED (hr = lpSurface-> LockRect (& lockRect, NULL, D3DLOCK_NO_DIRTY_UPDATE | D3DLOCK_READLY) | D3DLOCK_NOSYSLOCK)))
Без сглаживания экран печати работает отлично. В чем проблема?