dx12 открыть 4x мсаа не удалось - PullRequest
       56

dx12 открыть 4x мсаа не удалось

0 голосов
/ 24 сентября 2018

Я только что изучил «введение в программирование трехмерных игр с помощью DirectX 12». При запуске примера кода в initialize d3d (глава 4), когда я хочу использовать 4xmsaa, произошло что-то не так, как на следующем рисунке, пожалуйста, помогите мне. неправильная цифра

1 Ответ

0 голосов
/ 25 сентября 2018

В соответствии с философией проектирования DirectX 12 «без магического поведения во время выполнения», вам не разрешено создавать backbuffer как MSAA.Это связано с тем, что оборудование для вывода видео на самом деле не может представлять буферные буферы MSAA, поэтому они должны быть разрешены до одного пикселя каждый в некоторой точке конвейера.В DirectX 11 это было сделано «за кулисами», когда вы создали буфер MSAA.В DirectX 12 вы несете ответственность за создание целевой текстуры рендеринга MSAA самостоятельно, а затем выполняете преобразование в буферный буфер или запускаете какой-то другой постпроцесс, который выполняет преобразование.Настройка точно такая же, только более многословная и явная и находится под контролем приложения, а не «волшебная».

См. SimpleMSAA12 пример.

В DirectX 12 вам также не разрешено создавать буферы формата sRGB.Вы можете создать целевые представления рендера sRGB, которые будут выполнять гамму при записи в буфер.Были некоторые ошибки в старых слоях отладки и во время выполнения Windows 10 при прямом разрешении целей рендеринга sRGB MSAA в не-sRGB-буферы.Это также отмечено в приведенном выше примере.

Обратите внимание, что приложения UWP ведут себя точно так же, как DirectX 12 для настольных приложений Win32.Это связано с тем, что как приложения UWP, так и DirectX 12 должны использовать эффекты обмена DXGI_SWAP_EFFECT_FLIP_* вместо устаревших режимов обмена DXGI_SWAP_EFFECT_*.

Кстати, если вы включили отладку DXGI, вы быполучили некоторые специфические результаты диагностики отладки, когда вы пытались создать 4-кратный буфер MSAA:

DXGI ERROR: IDXGIFactory::CreateSwapChain: Flip model swapchains (
DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL
and DXGI_SWAP_EFFECT_FLIP_DISCARD) do not support multisampling.
[ MISCELLANEOUS ERROR #102: ]

Посмотрите эту запись в блоге для получения подробной информации о включении отладки DXGI в вашем проекте, иливзгляните на реализацию DeviceResources .

...