You need to take the original source surface in the GPU memory and draw () on a smaller surface. This is due to simple vector / pixel shaders that some people with simple needs would rather avoid.
I would see if anyone had done a sprite lib for sharpdx. It should be a normal thing ... or using Direct2D (which is a lot more fun). Since D2D is the only user-mode library over D3D, it interacts very easily with D3D.
I never used SharpDx, but fFrom memory you would do something like this:
1.) Create an ID2D1Device by wrapping an existing DXGI device (make sure the dxgi device creation flag has D3D11_CREATE_DEVICE_BGRA_SUPPORT)
2.) Get ID2D1DeviceContext from your ID2D1Device
3.) Wrap your source and destination DXGI surfaces in D2D bitmaps using ID2D1DeviceContext :: CreateBitmapFromDxgiSurface
4.) ID2D1DeviceContext :: SetTarget of your target surface
5.) BeginDraw, ID2D1DeviceContext :: DrawBitmap, passing the original D2D bitmap. Endraw
6.) Save destination
Jeremiah morrill
source share