У меня есть приложение WPF, и я пытаюсь переключиться с рендеринга на управление Winforms на рендеринг на изображение с использованием d3dimage (потому что я хочу иметь возможность разместить немного интерфейса WPF поверх рендеринга, задачи воздушного пространства и все такое), так что я Знаю, что мне нужно создать устройство DirectX 9 и создать общую текстуру, я пытаюсь следовать примерам других людей, но по какой -то причине создание общей текстуры терпит неудачу (но не просто текстура DirectX 9, только когда я передаю рукоятку The DirectX 11 The The The Конструктор), я попытался использовать как аппаратные, так и справочные устройства для DirectX 9 или DirectX 11, я попытался настроить форматы, флаги создания, ничего не помогло, следовали за всеми ограничениями, описанными здесь https://learn.microsoft.com/ru-ru/ Windows/Win32/API/D3D11/NF-D3D11-ID3D11DEVICE-OPENSHAREDRESOURCE? RedirectedFrom = MSDN и до сих пор нет, какие идеи?
xaml:
< /code>
cb: < /p>
private void Window_Loaded(object sender, RoutedEventArgs e)
{
SharpDX.Direct3D11.Device device = new SharpDX.Direct3D11.Device(DriverType.Hardware, DeviceCreationFlags.None | DeviceCreationFlags.BgraSupport, FeatureLevel.Level_11_0);
SharpDX.Direct3D11.Texture2D texture = new SharpDX.Direct3D11.Texture2D(device, new Texture2DDescription()
{
Width = WinFormsControl.ClientSize.Width,
Height = WinFormsControl.ClientSize.Height,
ArraySize = 1,
BindFlags = BindFlags.RenderTarget,
Usage = ResourceUsage.Default,
CpuAccessFlags = CpuAccessFlags.None,
Format = SharpDX.DXGI.Format.R8G8B8A8_UNorm,
MipLevels = 1,
OptionFlags = ResourceOptionFlags.Shared,
SampleDescription = new SampleDescription(1, 0)
});
Direct3DEx d9context = new Direct3DEx();
DeviceEx d9device = new DeviceEx(d9context,
0,
DeviceType.Hardware,
IntPtr.Zero,
CreateFlags.HardwareVertexProcessing | CreateFlags.Multithreaded | CreateFlags.FpuPreserve,
new SharpDX.Direct3D9.PresentParameters()
{
Windowed = true,
SwapEffect = SharpDX.Direct3D9.SwapEffect.Discard,
DeviceWindowHandle = WinFormsControl.Handle,
PresentationInterval = PresentInterval.Immediate,
});
IntPtr renderTextureHandle = texture.QueryInterface().SharedHandle;
SharpDX.Direct3D9.Texture d9texture = new SharpDX.Direct3D9.Texture(d9device,
texture.Description.Width,
texture.Description.Height,
1,
SharpDX.Direct3D9.Usage.RenderTarget,
SharpDX.Direct3D9.Format.A8B8G8R8,
Pool.Default,
ref renderTextureHandle);
}
Подробнее здесь: https://stackoverflow.com/questions/709 ... ls-sharpdx
DirectX9-DirectX11 Создание общей текстуры терпит неудачу Sharpdx ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Поверхность Unity SharpDX IDirect3DSurface для SharpDX.Direct3D11.Texture2D
Anonymous » » в форуме C# - 0 Ответы
- 28 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему мое видео не соответствует размеру текстуры, когда я меняю размер текстуры
Anonymous » » в форуме Android - 0 Ответы
- 31 Просмотры
-
Последнее сообщение Anonymous
-