gpt4 book ai didi

c# - SharpDX ResizeBuffers 的 Resize 事件错误 0x887A0001

转载 作者:太空宇宙 更新时间:2023-11-03 21:23:22 32 4
gpt4 key购买 nike

我试着制作 this sample可调整大小。

我在调整大小时只添加了这个事件处理程序,但我收到错误 0x887A0001。我能做什么?

static void form_Resize(object sender, EventArgs e)
{
backBuffer.Dispose();
renderView.Dispose();
device.Dispose();
swapChain.ResizeBuffers(1, form.ClientSize.Width, form.ClientSize.Height, Format.Unknown, SwapChainFlags.AllowModeSwitch);
}

最佳答案

由于您没有释放backBuffer 和所有相关资源,因此在 Debug模式下您将遇到以下错误:

DXGI ERROR: IDXGISwapChain::ResizeBuffers: Swapchain cannot be resized unless all outstanding buffer references have been released. [ MISCELLANEOUS ERROR #19: ]

为确保所有内容都已正确发布和重新创建,您可以在 stopwatch.Start()(第 88 行)和 RenderLoop.Run(...)< 之间附加以下代码(第 91 行):

form.ResizeEnd += (sender, args) =>
{
device.ImmediateContext.ClearState();
d2dRenderTarget.Dispose();
backBuffer.Dispose();
renderView.Dispose();
surface.Dispose();
swapChain.ResizeBuffers(1, 0, 0, Format.Unknown, SwapChainFlags.AllowModeSwitch);
backBuffer = Texture2D.FromSwapChain<Texture2D>(swapChain, 0);
renderView = new RenderTargetView(device, backBuffer);
surface = backBuffer.QueryInterface<Surface>();
d2dRenderTarget = new RenderTarget(d2dFactory, surface, new RenderTargetProperties(new PixelFormat(Format.Unknown, AlphaMode.Premultiplied)));
};

device.ImmediateContext.ClearState() 是可选的(在您的情况下,使用 Direct2D,不需要它,但通常添加它以确保渲染目标未绑定(bind)是个好主意不再是上下文,因为 CLR 只会在需要刷新命令缓冲区时将其处理。

关于c# - SharpDX ResizeBuffers 的 Resize 事件错误 0x887A0001,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29041652/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com