Мультисэмплинг (MSAA) для DirectX11/DirectX10 с общим ресурсом D3DImage

Я пытаюсь получить MSAA в DX11 с помощью D3DImage, но, похоже, это невозможно, поскольку общая структура мультисэмплинга не разрешена, как указано здесь: http://msdn.microsoft.com/en-us/library/windows/desktop/ff476531(v=vs.85).aspx

На самом деле, я использую SharpDX-реализацию D3DImage, которая отлично работает для DX11 и DX10, пока можно оставить без сглаживания.

Подходы к ее решению описаны в этой теме: http://sharpdx.org/forum/5-api-usage/1000-d3d11-problem-with-usage-of-texture2d которые не увенчались успехом. Существует еще одна тема, задающая аналогичный вопрос: мультисэмплинг и Direct3D10 / D3DImage interop

Наконец, вопрос в том, может ли кто-нибудь подтвердить, что D3DImage определенно НЕ возможно использовать для рендеринга сглаженного контента из DX10/DX11?

1 ответ

Решение

Как сказано в ссылке на Microsoft (пробовал также несколько раз), многосэмплированные общие текстуры не допускаются (фактически текстура также не должна иметь мип-уровня (ов), как дополнительная информация)

Единственный способ поделиться текстурой - создать версию без мультисэмплинга (тот же формат / параметры), а затем использовать

 DeviceContext.ResolveSubresource

в SharpDX, чтобы преобразовать текстуру msaa в несемплированную, вы можете поделиться результатом этого.

Другие вопросы по тегам