Vorrei attivare multicampionamento quando si disegna triangoli come nella figura seguente: Multisampling 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?
Funziona come un fascino !!! Grazie mille :) –
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 * ... –
@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