2012-10-15 11 views
5

çalışmaz: Ben another question içinde ile SlimDX yapmak için bir yol bulmuş enter image description hereMultisampling aşağıdaki resimdeki gibi üçgenler çizerken multisampling etkinleştirmek istediğiniz özel modda

ama çalışmıyor özel modda.

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

son satırı alway D3DERR_INVALIDCALL hatasıyla crashs bile multisampleQuality için her zaman hiçbir hata ile doğru ve 8 CheckDeviceMultisampleType dönüş:

İşte benim kodudur.

Pencereli modu kullanırsam veya çoklu örnek seçeneğini kaldırırsam çalışır.

Birisi bana sorunun ne olduğunu söyleyebilir mi?

cevap

1

presentParams.SwapEffect = SwapEffect.Discard; 
+0

Bu bir cazibe gibi çalışır ile deneyin !!! Çok teşekkür ederim :) –

+0

Merhaba @catflier! Bunun için bir açıklamanız var mı? Aslında bu parametrenin * SwapEffect.Copy * ... –

+0

@ tinmaru'ya ayarlanmasına ihtiyacım olduğunu fark ettim: Evet, çünkü bunu yapamazsın, çünkü çoğunlukla swapeffect.copy piksel başına piksel kopyalamaya ihtiyaç duyuyor Bu yüzden msaa ile çalışmaz (alt piksel örneklerine sahip olduğunuzdan). Ayrıca neden SwapEffect.Copy'ye ihtiyacınız var? Atmak oldukça tatlıdır – catflier