У меня есть приложение 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#
Место общения программистов C#
-
Anonymous
1738674322
Anonymous
У меня есть приложение 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);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/70981545/directx9-directx11-shared-texture-creation-fails-sharpdx[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия