Directx 9 - поведение SetScissorRect одинаково для поверхностей? - PullRequest
0 голосов
/ 07 января 2020

Прежде всего, мне нужно использовать DirectX 9 для совместимости,

Я начал рисовать текст с

RECT pos { 2, 2, 100, 100 };


if(!gfont)
    D3DXCreateFont( iDev, 20, NULL, NULL, NULL, NULL, DEFAULT_CHARSET, NULL, ANTIALIASED_QUALITY, NULL, "Segoe UI Light", &gfont );
else
{
    gfont->DrawText( NULL, "Sample", -1, &pos, NULL, D3DCOLOR_ARGB( 255, 0, 255, 255 ) );
}

и все в порядке, я получаю:

enter image description here

, поэтому, если мы добавим SetScissorRect

RECT protectedRect { 2, 2, 50, 50 };

iDev->SetRenderState( D3DRS_SCISSORTESTENABLE, TRUE );  
iDev->SetScissorRect( &protectedRect );

, я получу:

enter image description here

что это правильный результат, теперь, если я делаю с поверхностями, поверхность загружается с D3DXLoadSurfaceFromFile() и выделяется с CreateOffscreenPlainSurface() из файла jpg ...

iDev->GetBackBuffer(NULL, NULL, D3DBACKBUFFER_TYPE_MONO, &backBuffsfc);
iDev->UpdateSurface(sfc, NULL, backBuffsfc, NULL);

RECT protectedRect { 2, 2, 50, 50 };

iDev->SetRenderState( D3DRS_SCISSORTESTENABLE, TRUE );  
iDev->SetScissorRect( &protectedRect );

поверхность продолжает появляться полностью как

enter image description here

вопрос, почему не обрезается как текст?

...