Войти
ПрограммированиеФорумГрафика

Shared текстура из d3d11 в d3d9

#0
17:51, 31 окт. 2018

если либа, она создает дх11 текстуру работая в отдельном процессе
эту текстуру нада показать в другом процессе который рендерит через Direct3D9Ex

судя по https://docs.microsoft.com/en-us/windows/desktop/direct3darticles… graphics-apis
это можно делать

типа :

D3DDevice->CreateTexture(width, height, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &texture, &shared_handle)

но не работает, грит Direct3D9: (ERROR) :Opened and created resources don't match, unable to open the shared resource.

никто такое не пробовал?


#1
17:56, 31 окт. 2018

там шаринг в пределах одного процесса я так понял.
между процессами память надо шарить через MemoryMappedFile

#2
18:25, 31 окт. 2018

gamedevfor

та не, в пределах процесса это не имеет смысла

#3
18:33, 31 окт. 2018

В dx11 текстура правильный формат имеет?
Судя по таблице, там не очевидное соответствие
https://docs.microsoft.com/en-us/windows/desktop/direct3d10/d3d10… egacy-formats

#4
(Правка: 18:46) 18:37, 31 окт. 2018

CapSopener

да, этот момент меня смущал но я проверил и вроде всё норм, приезжает DXGI_FORMAT_B8G8R8A8_UNORM а я запрашиваю D3DFMT_A8R8G8B8

причем я точно знаю что там именно  DXGI_FORMAT_B8G8R8A8_UNORM, потому что я для теста открыл этот хендл в дх11 приложении и там именно этот формат

D3D11_TEXTURE2D_DESC
    Width  1280  unsigned int
    Height  720  unsigned int
    MipLevels  1  unsigned int
    ArraySize  1  unsigned int
    Format  DXGI_FORMAT_B8G8R8A8_UNORM (87)  DXGI_FORMAT
    SampleDesc  {Count=1 Quality=0 }  DXGI_SAMPLE_DESC
    Usage  D3D11_USAGE_DEFAULT (0)  D3D11_USAGE
    BindFlags  8  unsigned int
    CPUAccessFlags  0  unsigned int
    MiscFlags  2  unsigned int

#5
18:48, 31 окт. 2018

    BindFlags  8 - это D3D11_BIND_SHADER_RESOURCE
    MiscFlags  2  - это D3D11_RESOURCE_MISC_SHARED

Прошло более 6 месяцев
#6
16:56, 13 мая 2019

Прошу прощения за некропост,
интересно, автору удалось решить проблему? в чем были грабли?

#7
(Правка: 16:59) 16:58, 13 мая 2019

jackfrost
не удалось, тупо не работает, а должно

решил жестоким способом - преписыванием движка на дх11

#8
19:21, 13 мая 2019

Через DX10 нужно делать, кажется...

#9
20:56, 13 мая 2019

У меня DX10 и DX11 рисуют на одной текстуре.

#10
11:45, 14 мая 2019

в MSDN пишут должно работать начиная с d3d9ex, но у меня не получается...

#11
12:00, 14 мая 2019

тут пишут что работает при некоторых условиях https://stackoverflow.com/questions/9924426/share-resource-from-d… 1-to-directx9

#12
12:55, 14 мая 2019

Да, и вы соблюли условия ?

#13
(Правка: 12:59) 12:59, 14 мая 2019

нада  RENDER_TARGET попробовать, я кажется не пробовал

#14
18:31, 14 мая 2019

Для IDirect3DDevice9Ex работает, для обычного IDirect3DDevice9 нет.

ПрограммированиеФорумГрафика