Как вы используете CheckMultisampleQualityLevels и включаете мультисэмплинг - PullRequest
4 голосов
/ 16 марта 2011

Я изучаю DirectX 11 и пытаюсь настроить мультисэмплинг.По какой-то причине каждый учебник в Интернете отключает мультисэмплинг и никогда не рассказывает, как его включить.

Во-первых: я искал вокруг и не могу найти примеры использования CheckMultisampleQualityLevels.Похоже, вам нужно создать устройство, вызвать эту функцию, выяснить доступные уровни, затем уничтожить это устройство и создать новое с нужными вам настройками.Это правильный способ сделать это?Или есть лучший способ?

Во-вторых, как включить мультисэмплинг?Так как я не уверен, как заставить работать CheckMultisampleQualityLevels, я попытался ввести некоторые значения для DXGI_SWAP_CHAIN_DESC.SampleDesc.Count и DXGI_SWAP_CHAIN_DESC.SampleDesc.Quality (например, 4 и 4), и пока он работает, ничего не отображается (если я установлю, произойдет ошибкав сумасшедших ценностях, таких как 33 и 2).Нужно ли это устанавливать где-то еще, кроме описания цепочки подкачки, или шейдеры каким-то образом мешают ему (у меня настроен базовый шейдер освещения и текстуры)?он может поддерживать большинство настроек AA.Я слежу за этим набором учебников, на случай, если это поможет: http://rastertek.com/tutindex.html

Ответы [ 3 ]

5 голосов
/ 31 декабря 2012

1.Call ID3D11Device :: CheckMultisampleQualityLevels , который дает уровень качества, поддерживаемый адаптером.

2.При заполнении DXGI_SWAP_CHAIN_DESC установите SampleDesc.Count и SampleDesc.Quality.

3.Если используется сглаживание нескольких образцов, все связанные цели рендеринга и буферы глубины должны иметь одинаковое количество образцов и уровни качества. ( структура DXGI_SAMPLE_DESC )

В соответствии с документом msdn о структуре D3D11_RASTERIZER_DESC ( D3D11_RASTERIZER_DESC ), уровень функции API 10.1 и выше, MultisampleEnable не влияет на точки и треугольники относительно MSAA и влияет только на выбор рендеринга линии алгоритм.

Вы должны проверить MSDN для более подробной информации.

1 голос
/ 18 апреля 2013

это помогло мне:

  • должны иметь одинаковое количество образцов и уровни качества
  • deepStencilViewDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2DMS;

спасибо @Telanor и @ user1253930

1 голос
/ 16 марта 2011

Вы должны попробовать установить MultisampleEnable D3D11_RASTERIZER_DESC .

Также установите качество на 1.

Что касается CheckmultisampleQuality, вы просто устанавливаете формат DXGI, который хотите создать. Количество образцов, которые вы хотите. Наконец, передайте указатель на uint, и он вернет количество доступных вам уровней качества. Если он возвращает 0, мультисэмплинг не поддерживается, иначе вы знаете, какие уровни качества вы можете установить.

...