Me gustaría habilitar el multimuestreo al dibujar triangularjs como en la siguiente imagen:
Encontré una forma de hacerlo con SlimDX en otra pregunta, pero no funciona en modo exclusivo.
Aquí está mi código:
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); }
La última línea siempre se bloquea con un error D3DERR_INVALIDCALL, incluso si CheckDeviceMultisampleType devuelve siempre verdadero sin error y 8 para multisampleQuality .
Funciona si uso el modo de ventana o si quito la opción de multimuestra.
¿Alguien puede decirme que está mal?
Prueba con
presentParams.SwapEffect = SwapEffect.Discard;