IDirect3DSurface9::LockRect()得到D3DLOCKED_RECT结构Pitch值改变的问题

D3DLOCKED_RECT lockRect;
HRESULT hr;
hr = p_D3d9Surface->LockRect(&lockRect, NULL, D3DLOCK_DONOTWAIT);
if (FAILED(hr)) {
return FALSE;
}

int y_stride = lockRect.Pitch;

图像的尺寸 720*1280
创建的Surface 也是按根据图像大小创建
p_D3d9Device->CreateOffscreenPlainSurface(720, 1280, (D3DFORMAT)MAKEFOURCC('I', '4', '2', '0'), D3DPOOL_DEFAULT, &p_D3d9Surface, NULL);

程序运行返回的 lockRect.Pitch 是768 可以正常显示图像。

问题是按 Alt+Ctrl+Del 键中断了系统后返回,lockRect.Pitch 值就变成 11520 了。

尝试过在LockRect 中加入RECT参数
hr = p_D3d9Surface->LockRect(&lockRect, &rc_Frame, D3DLOCK_DONOTWAIT);

但结果是一样的。

请问这个是什么问题,应该如何解决?

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。