2012-10-15 15 views
5

Chciałbym włączyć multisampling podczas rysowania trójkątów jak na poniższym zdjęciu: enter image description herewielodobieranie nie działa w trybie wyłączności

znalazłem sposób zrobić z SlimDX w another question ale to nie działa w trybie wyłączności.

Oto mój kod:

void Form1_Load(object sender, EventArgs e) 
{ 
    Direct3D d3d = new Direct3D(); 

    PresentParameters presentParams; 

    presentParams.Windowed = false; 
    presentParams.BackBufferFormat = Format.X8R8G8B8; 
    presentParams.BackBufferWidth = 800; 
    presentParams.BackBufferHeight = 600; 
    presentParams.FullScreenRefreshRateInHertz = 60; 
    presentParams.SwapEffect = SwapEffect.Copy; 
    presentParams.BackBufferCount = 1; 
    presentParams.PresentationInterval = PresentInterval.One; 

    int multisampleQuality; 
    Result result; 
    if (d3d.CheckDeviceMultisampleType(adaptor, DeviceType.Hardware, Format.X8R8G8B8, false, MultisampleType.FourSamples, out multisampleQuality, out result)) 
    { 
     if(multisampleQuality > 4) 
     { 
      presentParams.Multisample = multisampleType; 
      presentParams.MultisampleQuality = 4; 
     } 
    } 

    // Device creation 
    Device device = new Device(d3d, adaptor, DeviceType.Hardware, this.Handle, CreateFlags.HardwareVertexProcessing, presentParams); 
} 

Ostatnia linia sprecyzowane ścina z błędem D3DERR_INVALIDCALL nawet jeśli CheckDeviceMultisampleType powrót zawsze prawdziwe bez błędu i 8 dla multisampleQuality.

Działa, gdy korzystam z trybu okienkowego lub jeśli opcja multisample zostanie usunięta.

Czy ktoś może mi powiedzieć, co jest nie tak?

Odpowiedz

1

Spróbuj z

presentParams.SwapEffect = SwapEffect.Discard; 
+0

To działa jak urok !!! Dziękuję bardzo :) –

+0

Hi @catflier! Czy masz wyjaśnienie tego? Zdałem sobie sprawę, że w rzeczywistości potrzebuję tego bieżącego parametru do ustawienia * SwapEffect.Copy * ... –

+0

@tinmaru: Tak, jest kilka powodów, dla których nie możesz tego zrobić, głównie dlatego, że swapeffect.copy musi skopiować piksel na piksel , więc nie działałoby z msaa (ponieważ masz próbki subpikseli). Również dlaczego potrzebujesz SwapEffect.Copy? Odrzuć jest dość grubym standardem – catflier

Powiązane problemy