2

しばらくの間、WinFormsでSlimDXを使用していますが、今すぐWPFに切り替えたいと考えています。ただし、DX10/11をWPFで動作させる方法がわかりません。SlimDXの2月のリリースでは、WPFの例が提供されていますが、これはDX9でのみ機能します。次の解決策を見つけました:http://jmorrill.hjtcentral.com/Home/tabid/428/EntryId/437/Direct3D-10-11-Direct2D-in-WPF.aspx ですが、SlimDXで動作させることができません。SlimDXテクスチャから共有ハンドルを取得する方法がわからないため、私の主な問題は共有リソースハンドルです。このトピックに関する情報が見つかりません。

C ++では、コードは次のようになります。

HRESULT D3DImageEx::GetSharedHandle(IUnknown *pUnknown, HANDLE * pHandle)
{
    HRESULT hr = S_OK;

    *pHandle = NULL;
    IDXGIResource* pSurface;

    if (FAILED(hr = pUnknown->QueryInterface(__uuidof(IDXGIResource), (void**)&pSurface)))
        return hr;

    hr = pSurface->GetSharedHandle(pHandle);
    pSurface->Release();

    return hr;
}

基本的に、私がやりたいのは(これが解決策だと思うので)、Direct3d9DeviceEx(WPF D3DImageをレンダリングするため)とDirect3d10Device(シーンのテクスチャレンダリングターゲット)の間でテクスチャを共有することです。

正しい方向へのポインタは大歓迎です。

4

3 に答える 3

2

彼らは、WPFでslimdx/directx10を使用する方法に関するサンプルコードをいくつか投稿しました。ここにリンクがあります

于 2010-06-10T13:55:32.627 に答える
0

WindowsFormsHostと呼ばれるコントロールがありますが、現在のWinFormコントロールをそのように統合できますか?

于 2010-03-29T20:40:57.897 に答える
0

D3DImageExをご覧ください。http://jmorrill.hjtcentral.com/Home/tabid/428/EntryId/437/Direct3D-10-11-Direct2D-in-WPF.aspx レンダーターゲットへの参照を提供しますが、共有で作成する必要があります国旗。しかし、私はこのようにスワップチェーンを使用することができませんでした。

let renderTargetDescription = Texture2DDescription(     Width=width,
                                                        Height=height,
                                                        MipLevels=1,
                                                        ArraySize=1,
                                                        Format = Format.B8G8R8A8_UNorm,
                                                        SampleDescription = SampleDescription(Count = 1),
                                                        BindFlags = (BindFlags.RenderTarget ||| BindFlags.ShaderResource),
                                                        OptionFlags = ResourceOptionFlags.Shared)
于 2010-06-08T20:02:57.163 に答える