Как я могу получить возможности мультисэмплинга графической карты с SlimDX в C#?

Я хочу предоставить пользователю выбор опций MSAA в игре. Я хочу иметь возможность проверить, какие параметры мультисэмплинга может предоставить их машина, и отображать только эти. Приложение, в котором я работаю, встроено в WinForms; на самом деле это не сама игра, а лаунчер для этой игры.

Я нашел SlimDX.Direct3D11.Device.CheckMultisampleQualityLevels(), но не знаю, как получить ссылку на устройство Direct3D11 в WinForms. https://msdn.microsoft.com/en-us/library/windows/desktop/ff476499%28v=vs.85%29.aspx


person TheDanman    schedule 30.03.2015    source источник


Ответы (1)


Вам нужно перебрать все возможные количества выборок и убедиться, что поддерживается хотя бы один уровень качества (вам нужно сделать это для каждого формата):

SlimDX.Direct3D11.Device device; //your created device
SlimDX.DXGI.Format format = SlimDX.DXGI.Format.R8G8B8A8_Unorm; //Replace by the format you want to test, this one is very common still
for (int samplecount = 1; samplecount  < SlimDX.Device.MultisampleCountMaximum ; samplecount *= 2)
{
     int levels = device.CheckMultisampleQualityLevels(format, samplecount );
     if (levels > 0)
     {
         //you can use a sampledescription of
         new SampleDescription(samplecount, /* value between 0 and levels -1 */
     }
     else
     {
         // samplecount is not supported for this format
     }
}
person mrvux    schedule 09.04.2015