|

提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).
//GetFrontBufferData就正常,GetBackBuffer显示是0
function PresentCallback(const Self: IDirect3DDevice9;
const SourceRect, DestRect: PRect; const DestWindowOverride: HWND;
DirtyRegion: PRgnData): HResult; stdcall;
var
MenuFont: D3DX9.ID3DXFont;
rec: PRect;
pSurface: IDirect3DSurface9;
ARect: TRect;
LockedRect: TD3DLockedRect;
BitsPerPixel: Byte;
BMP:TBitmap;
i,p: Integer;
x:integer;
begin
self.CreateOffscreenPlainSurface(Screen.Width, Screen.Height, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, pSurface, nil);
// D3DPOOL_SCRATCH
//self.GetFrontBufferData(0, pSurface);
self.GetBackBuffer(0, 0, 0, pSurface);
//这里可以直接正常保存
//D3DXSaveSurfaceToFile('Desktop.bmp', D3DXIFF_BMP, pSurface, nil, nil);
ARect := Screen.DesktopRect;
pSurface.LockRect(LockedRect, @ARect, D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_NOSYSLOCK or D3DLOCK_READONLY);
// use Bitmap to save surface
BMP := TBitmap.Create;
BitsPerPixel := GetDeviceCaps(GetWindowDC(GetDesktopWindow()), BITSPIXEL);
BMP.Width := Screen.Width;
BMP.Height := Screen.Height;
case BitsPerPixel of
8: BMP.PixelFormat := pf8bit;
16: BMP.PixelFormat := pf16bit;
24: BMP.PixelFormat := pf24bit;
32: BMP.PixelFormat := pf32bit;
end;
p := Cardinal(LockedRect.Bits);
//GetFrontBufferData就正常,GetBackBuffer显示是0
outputdebugstring(pchar('--'+inttostr(p)));
for i := 0 to Screen.Height - 1 do
begin
CopyMemory(BMP.ScanLine, Ptr(p), Screen.Width * BitsPerPixel div 8);
p := p + LockedRect.Pitch;
end;
bmp.SaveToFile('a.bmp');
bmp.Free;
pSurface.UnlockRect;
Result := PresentNext(self, SourceRect, DestRect, DestWindowOverride, DirtyRegion);
end;
联系我时,请说是在 挂海论坛 上看到的,谢谢! |
上一篇: WSASend发送问题下一篇: 一段自动刷新页面的工具.
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。
2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:xhzlw@foxmail.com),本站将立即改正。
|