Как преобразовать IDirect3DSurface9? - PullRequest
0 голосов
/ 08 марта 2019

Моя программа будет декодировать и визуализировать видео из RTSP Stream.

Я расшифровал и создал IDirect3DSurface9, а затем обработал эту поверхность успешно.

Теперь я хочу увеличить и перетащить видео, я использую D3DXMATRIX, но это не работает.

VOID RenderFrame(LPDIRECT3DSURFACE9 surface)
{
    IDirect3DDevice9* pDevice = ctx->d3d9device;
    pDevice->BeginScene();

    IDirect3DSurface9 * pBackBuffer = NULL;
    pDevice->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &pBackBuffer);    

    pDevice->StretchRect(surface, NULL, pBackBuffer, NULL, D3DTEXF_LINEAR);

    //This code for transform **************
    D3DXMATRIX matScale;
    D3DXMATRIX matTranslate;
    D3DXMatrixTranslation(&matTranslate, 12.0f, 4.0f, 0.0f);
    D3DXMatrixScaling(&matScale, 2.0f, 2.0f, 2.0f);
    pDevice->SetTransform(D3DTS_WORLD, &(matTranslate * matScale));

    pDevice->EndScene();
    pDevice->Present(NULL, NULL, NULL, NULL);
}

Видео по-прежнему отображается нормально, но оно не применяет эффект преобразования.

Я думаю, я использовал D3DXMATRIX неправильно. Кто-то может показать мне способ применить преобразование в функции Render() выше?

Спасибо:)

...