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

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

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

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

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


person DerPrzem    schedule 05.11.2012    source источник


Ответы (1)


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

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

 DeviceContext.ResolveSubresource

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

person mrvux    schedule 05.11.2012
comment
благодаря. хорошо, но вопрос в том, позволяет ли мне рендерить с использованием MSAA в DX11? Я попробовал предложенное вами решение, создав Texture2D с SampleDescription (4, 16), скопировав его с помощью DeviceContext.ResolveSubresource и прикрепив копию, отличную от MS, к D3DImage. Но мне не помогает получить сглаженный вывод в DX11... - person DerPrzem; 06.11.2012
comment
Итак, вы создаете текстуру MSAA (со связанным целевым объектом рендеринга), выполняете рендеринг в целевом объекте рендеринга MSAA, разрешаете текстуру MSAA в не мультисэмплированную, а результат не подвергается сглаживанию? - person mrvux; 06.11.2012
comment
Да. Я обнаружил ошибку - я не установил для буфера глубины то же SampleDescription, что и для буфера цвета. Теперь он рендерит MSAA! Спасибо за помощь. - person DerPrzem; 06.11.2012