2012-10-15 11 views
5

Vorrei attivare multicampionamento quando si disegna triangoli come nella figura seguente: enter image description hereMultisampling non funziona in modalità esclusiva

ho trovato un modo a che fare con SlimDX in another question ma non funziona in modalità esclusiva.

Ecco il mio codice:

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); 
} 

L'ultima riga scontri sempre puntuale con un errore D3DERR_INVALIDCALL anche se il CheckDeviceMultisampleType ritorno sempre vero senza errori e 8 per multisampleQuality.

Funziona se uso la modalità finestra o se rimuovo l'opzione multicampione.

Qualcuno può dirmi cosa c'è che non va?

risposta

1

Prova con

presentParams.SwapEffect = SwapEffect.Discard; 
+0

Funziona come un fascino !!! Grazie mille :) –

+0

Ciao @catflier! Hai una spiegazione per questo? Mi sono reso conto che in effetti ho bisogno che questo parametro attuale sia impostato su * SwapEffect.Copy * ... –

+0

@tinmaru: Sì, ci sono alcuni motivi per cui non puoi farlo, soprattutto dal momento che swapeffect.copy deve copiare pixel per pixel , quindi non funzionerebbe con msaa (dato che hai esempi di pixel secondari). Inoltre, perché dovresti aver bisogno di SwapEffect.Copy? Lo scarto è piuttosto buono come standard – catflier

Problemi correlati