Je souhaite redimensionner ma swapchain lors du redimensionnement de l'écran sur mon application de formulaire Windows. Quand je fais cela, je dois disposer mon plus deviceContext, tampon, cible etc ...Redimensionner swapchain provoque l'utilisation de bitmap (SharpDX, directX)
Regardez le code ci-dessous:
Public Overrides Sub Resize(Width As Integer, Height As Integer)
m_backBuffer.Dispose()
m_d2dContext.Dispose()
m_2dTarget.Dispose()
m_swapChain.ResizeBuffers(2, Width, Height, Format.R8G8B8A8_UNorm, SwapChainFlags.None)
m_backBuffer = m_swapChain.GetBackBuffer(Of Surface)(0)
Dim properties As BitmapProperties = New BitmapProperties(New SharpDX.Direct2D1.PixelFormat(SharpDX.DXGI.Format.R8G8B8A8_UNorm, SharpDX.Direct2D1.AlphaMode.Premultiplied), 96, 96)
Dim dxgiDevice As SharpDX.DXGI.Device = m_device.QueryInterface(Of SharpDX.DXGI.Device)()
Dim d2dDevice As SharpDX.Direct2D1.Device = New SharpDX.Direct2D1.Device(dxgiDevice)
m_d2dContext = New SharpDX.Direct2D1.DeviceContext(d2dDevice, SharpDX.Direct2D1.DeviceContextOptions.None)
m_2dTarget = New SharpDX.Direct2D1.Bitmap(m_d2dContext, m_backBuffer, properties)
m_d2dContext.Target = m_2dTarget
CType(m_Context, GpuDrawingContext).setRenderTarget(m_d2dContext)
End Sub
Le problème quand je fais ça, est que le bitmap j'avais précédemment créé pour afficher sur l'écran besoin d'un DeviceContext en tant que paramètre pour leur création. Cependant, maintenant que j'instancie un nouveau DeviceContext lors du redimensionnement, j'obtiens l'erreur WrongFactory lorsque je veux dessiner le bitmap sur le deviceContext car ils ne sont pas créés avec le même DeviceContext d'où nous voulons les dessiner.
Des solutions pour la fonction de redimensionnement?