Как вы используете CheckMultisampleQualityLevels и включаете мультисэмплинг
Я изучаю DirectX 11 и пытаюсь настроить мультисэмплинг. По какой-то причине каждый учебник в Интернете отключает мультисэмплинг и никогда не рассказывает, как его включить.
Во-первых: я искал и не могу найти примеры того, как использовать CheckMultisampleQualityLevels
, Похоже, вам нужно создать устройство, вызвать эту функцию, выяснить доступные уровни, затем уничтожить это устройство и создать новое с нужными вам настройками. Это правильный способ сделать это? Или есть лучший способ?
Во-вторых, как включить мультисэмплинг? Поскольку я не уверен, как получить CheckMultisampleQualityLevels
работая, я попытался ввести некоторые значения для DXGI_SWAP_CHAIN_DESC.SampleDesc.Count
а также DXGI_SWAP_CHAIN_DESC.SampleDesc.Quality
(как 4 и 4), и пока он работает, ничего не отображается (выдает ошибку, если я ввожу сумасшедшие значения, такие как 33 и 2). Нужно ли это устанавливать где-то еще, кроме описания цепочки подкачки, или шейдеры каким-то образом мешают этому (у меня настроен базовый шейдер освещения и текстуры)?
У меня GTX 570, поэтому я знаю, что он поддерживает большинство настроек AA. Я слежу за этим набором учебников, на случай, если это поможет: http://rastertek.com/tutindex.html
3 ответа
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 для более подробной информации.
Это помогло мне:
- буферы глубины должны иметь одинаковое количество образцов и уровни качества
- глубина StencilViewDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2DMS;
спасибо @Telanor и @user1253930
Вы должны попробовать установить MultisampleEnable D3D11_RASTERIZER_DESC.
Также установите качество на 1.
Что касается CheckmultisampleQuality, вы просто устанавливаете формат DXGI, который хотите создать. Количество образцов вы хотите. Наконец, передайте указатель на uint, и он вернет количество доступных вам уровней качества. Если он возвращает 0, то мультисэмплинг не поддерживается, иначе вы знаете, какие уровни качества вы можете установить.