0

Direct3D 10.1 アプリケーションで、D2D と D3D の描画コードを混在させようとしています。c0000005描画コードは正常に動作しますが、アプリは不確定な時間 (時間ではなく分) の後に必ずクラッシュします (モジュール d3d11.dll で code を使用)。関連するコードのセクションを以下に掲載しました。他のビットを見たいかどうか尋ねてください。この質問に追加できます。

DeviceCreationFlags

D3D10.DeviceCreationFlags deviceflags = D3D10.DeviceCreationFlags.BgraSupport; // Doesn't work without this flag

デバイスの作成

SlimDX.Direct3D10_1.Device1.CreateWithSwapChain( null, D3D10.DriverType.Hardware, deviceflags, SlimDX.Direct3D10_1.FeatureLevel.Level_10_1, swapchaindesc, out device, out swapchain );

Direct2D の初期化

        d2dFactory = new SlimDX.Direct2D.Factory(FactoryType.SingleThreaded);
        using (var backBuffer = SlimDX.Direct3D10.Resource.FromSwapChain<SlimDX.Direct3D10.Texture2D>(swapchain, 0))
        {
            d2dSurf = backBuffer.AsSurface();
            System.Drawing.SizeF dpi = d2dFactory.DesktopDpi;
            d2dRt = SlimDX.Direct2D.RenderTarget.FromDXGI(d2dFactory, d2dSurf,
                new SlimDX.Direct2D.RenderTargetProperties()
                {
                    Usage = SlimDX.Direct2D.RenderTargetUsage.None,
                    Type = SlimDX.Direct2D.RenderTargetType.Default,
                    PixelFormat = new SlimDX.Direct2D.PixelFormat(SlimDX.DXGI.Format.Unknown, SlimDX.Direct2D.AlphaMode.Premultiplied),
                });
            color = new SlimDX.Color4(Color.White);
            brush = new SlimDX.Direct2D.SolidColorBrush(d2dRt, color);
        }

描画コード

    private void Draw2D()
    {
        d2dRt.BeginDraw();

        // Drawing code here

        var hr = d2dRt.EndDraw();

        if (hr != SlimDX.Direct2D.ResultCode.Success)
            Console.WriteLine("EndDraw result: {0}", hr);
    }

前もって感謝します!

4

0 に答える 0