Как прочитать цвет Idirect3Dsurface8 в Delphi - PullRequest
0 голосов
/ 22 марта 2020

Я объяснил свою предыдущую проблему простым вопросом. Как я могу прочитать цвета моего backbuf (fer). Если найден какой-то код, есть рабочий backbuf, заполненный цветами, можно сохранить его в растровое изображение. Но когда я пытаюсь получить указатель на эти цвета в backbuf, я получаю «ошибку» в функции lockRect. Понятия не имею почему. (мои delphi навыки и особенно direct3D очень ограничены)

var
 backbuf : Idirect3Dsuface8;
 r :  Hresult;
 p : pointer;
begin
   r:=d3ddevice.GetBackBuffer(0, D3DBACKBUFFER_TYPE_MONO  ,  backbuf);  
   r:=D3DXSaveSurfaceToFile('test.bmp', D3DXIFF_BMP, backbuf, 0, 0);  // I can save the backbuffer to a readable file, so I know backbuf object has received the colors

    p := addr(lockedRect);
    zeromemory( p , sizeof ( D3Dlocked_rect ));
    r:=backbuf.LockRect(lockedrect, nil  , 0);
    if failed(r) then form1.Caption := 'error    '   //I ALWAYS GET AN ERROR -2005530516
                 else form1.caption := 'pitch:'+inttostr(lockedrect.Pitch)+' bits:'+inttostr(longint(lockedrect.pBits));
   backbuf.UnlockRect;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...