2015-02-11 3 views
0

Я могу скопировать содержимое из текстуры D3D11 в другое с помощью ID3D11DeviceContext::CopyResource. Способ относится к непосредственной связи конкретного устройства, поэтому я не могу скопировать текстуру от одного устройства к другому (я пробовал - она ​​взорвется, как ожидается, говоряCopyResource от одного устройства D3D11 к другому

«D3D11 КОРРУПЦИЯ: ID3D11DeviceContext :: CopyResource: Первый параметр не совпадает с устройством [РАЗНОЕ КОРРУПЦИЕЙ # 13: CORRUPTED_PARAMETER1].»

).

Есть ли какие-либо встроенные средства D3D11 для этого или я должен загрузить данные через промежуточную текстуру и загрузить ее на другое устройство?

+0

Насколько я знаю, вы должны явно блокировать и копировать себя. Это также имеет смысл, потому что разные устройства D3D могут быть разными аппаратными устройствами. – thang

ответ

3

Чтобы скопировать ресурс с одного устройства на другое, вам необходимо использовать общие поверхности DXGI. См. Surface Sharing Between Windows Graphics APIs.

Помните, что в общем случае устройства могут не иметь физической памяти или аппаратного обеспечения.

+0

Знаете ли вы, что общая поверхность (значительно) быстрее, чем сама копия? Я бы предположил, что только накладные расходы процессора могут быть меньше, потому что драйвер может оптимизировать это, но копирование через PCIe никогда нельзя избежать. – Christoph

+0

Я думаю, что может быть какое-то преимущество в производительности, если оно на самом деле находится на одном физическом устройстве, но это никогда не будет особенно «быстрым» для этого –

Смежные вопросы