C++ 使用direct3d缩放曲面大小

C++ 使用direct3d缩放曲面大小,c++,directx,direct3d,C++,Directx,Direct3d,我制作了一个截图程序,我使用GetFrontBufferData和D3DXSaveSurfaceToFile。以原始显示器分辨率保存的所有屏幕截图。我需要能够以不同的分辨率保存它们。我怎么能做到 ZeroMemory(&d3dpp, sizeof(D3DPRESENT_PARAMETERS)); d3dpp.Windowed = TRUE; d3dpp.Flags = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER; d3dpp.BackB

我制作了一个截图程序,我使用GetFrontBufferData和D3DXSaveSurfaceToFile。以原始显示器分辨率保存的所有屏幕截图。我需要能够以不同的分辨率保存它们。我怎么能做到

ZeroMemory(&d3dpp, sizeof(D3DPRESENT_PARAMETERS));

    d3dpp.Windowed = TRUE;
    d3dpp.Flags = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;
    d3dpp.BackBufferFormat = ddm.Format;
    d3dpp.BackBufferHeight = nDisplayHeight = gScreenRect.bottom = ddm.Height;
    d3dpp.BackBufferWidth = nDisplayWidth = gScreenRect.right = ddm.Width;
    d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
    d3dpp.hDeviceWindow = hWnd;
    d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
    d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;

    g_pD3D->CreateDevice(i, D3DDEVTYPE_REF, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &g_pd3dDevice);
    //g_pd3dDevice->GetRenderTarget(0, &g_pSurface);
    g_pd3dDevice->CreateOffscreenPlainSurface(ddm.Width, ddm.Height, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, &g_pSurface, NULL);
    SetCursor(LoadCursor(NULL, IDC_WAIT));
    g_pd3dDevice->GetFrontBufferData(0, g_pSurface);

    D3DXSaveSurfaceToFile(argv[0], D3DXIFF_BMP, g_pSurface, NULL, NULL);

用于调整输出图像的大小。@CodeAngry我真的找不到一些好的示例如何将其与D3D一起使用。我是否需要先将曲面保存到图像,或者我可以将其保存到内存中,然后使用WIC加载。您应该查看大量使用WIC的源代码。@NickEatMore做对您更容易的事情。我认为保存到文件、加载、调整大小并再次保存是非常重要的。即使不是最有效的。它可以在内存中完成,您可以在线找到大量WIC示例
CreateBitmapFromMemory(…)
--我真的不知道如何直接使用D3D输出。。。但是看看CW所说的DxTex。