2012-10-15 18 views
5

Tôi muốn để cho phép cách liền lạc khi vẽ hình tam giác như trên hình ảnh sau đây: enter image description herecách liền lạc không hoạt động trong chế độ độc quyền

Tôi tìm thấy một cách để làm với SlimDX trong another question nhưng nó không hoạt động ở chế độ độc quyền.

Đây là mã của tôi:

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

Dòng cuối cùng nhất luôn crashs với một lỗi D3DERR_INVALIDCALL ngay cả khi CheckDeviceMultisampleType trở lại luôn luôn đúng với không có lỗi và 8 cho multisampleQuality.

Nó hoạt động nếu tôi sử dụng chế độ cửa sổ hoặc nếu tôi xóa tùy chọn nhiều mẫu.

Ai đó có thể cho tôi biết có vấn đề gì không?

Trả lời

1

Hãy thử với

presentParams.SwapEffect = SwapEffect.Discard; 
+0

Nó hoạt động như một nét duyên dáng !!! Cảm ơn bạn rất nhiều :) –

+0

Hi @catflier! Bạn có lời giải thích cho điều đó không? Tôi nhận ra rằng trên thực tế, tôi cần tham số hiện tại này để được đặt thành * SwapEffect.Copy * ... –

+0

@tinmaru: Có một số lý do khiến bạn không thể làm điều đó, chủ yếu là vì swapeffect.copy cần sao chép pixel trên mỗi pixel , do đó, nó sẽ không hoạt động với msaa (vì bạn có mẫu pixel phụ). Ngoài ra tại sao bạn cần SwapEffect.Copy? Hủy bỏ là khá mush tiêu chuẩn – catflier

Các vấn đề liên quan