Общие ресурсы в SlimDX с DX10 - PullRequest
1 голос
/ 07 июля 2010

Я опробую функцию общих ресурсов DX10, так как мне это было нужно для одного из моих проектов. Но я не могу найти много примеров или кода, особенно используя SlimDX. Согласно документации DX10, мне просто нужно указать ресурсы как Shared, и затем я могу открыть их с помощью OpenSharedResource () из другого приложения. С помощью простого тестового приложения в SlimDX я сделал следующее

        Texture2D tex = new Texture2D(device, new Texture2DDescription()
        {
            ArraySize = 1,
            BindFlags = BindFlags.RenderTarget | BindFlags.ShaderResource,
            CpuAccessFlags = CpuAccessFlags.None,
            Format = Format.B8G8R8A8_UNorm,
            Height = 128,
            Width = 128,
            MipLevels = 1,
            OptionFlags = ResourceOptionFlags.Shared,
            SampleDescription = new SampleDescription(1, 0),
            Usage = ResourceUsage.Default,
        });

        Texture2D tex2 = device.OpenSharedResource<Texture2D>(tex.ComPointer);

Но я продолжаю получать эту ошибку

 E_INVALIDARG: An invalid parameter was passed to the returning function (-2147024809)

Кажется, я не могу понять, что пошло не так, поскольку tex.ComPointer может быть неправильным указателем для OpenSharedResource или не поддерживается Texture2D (четко не указано, что его нет в документации)

Другая альтернатива, указав pHandle для передачи в функцию CreateTexture, недоступна в SlimDX, или я не знаю об этом.

Кто-нибудь, кто пытался это успешно? Некоторая помощь была бы благодарна.

Спасибо

1 Ответ

4 голосов
/ 07 июля 2010

Я обнаружил проблему с моим кодом.Мне нужно использовать DXGI для получения общего дескриптора (не указателя).Следующий код прекрасно работает

SlimDX.DXGI.Resource r = new Resource(tex);

Texture2D tex2 = device.OpenSharedResource<Texture2D>(r.SharedHandle);
...