如何转换IDirect3DSurface9?

时间:2019-03-08 05:15:44

标签: c++ transform render direct3d

我的程序将解码并渲染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()函数中应用转换的方法吗?

谢谢:)

0 个答案:

没有答案