diff options
-rw-r--r-- | build.rs | 1 | ||||
-rw-r--r-- | src/lib.rs | 4 | ||||
-rw-r--r-- | src/win32/init.rs | 17 |
3 files changed, 16 insertions, 6 deletions
@@ -27,6 +27,7 @@ fn main() { "WGL_ARB_create_context_profile".to_string(), "WGL_ARB_extensions_string".to_string(), "WGL_ARB_framebuffer_sRGB".to_string(), + "WGL_ARB_multisample".to_string(), "WGL_ARB_pixel_format".to_string(), "WGL_EXT_create_context_es2_profile".to_string(), "WGL_EXT_extensions_string".to_string(), @@ -332,10 +332,6 @@ impl<'a> BuilderAttribs<'a> { continue; } - if self.multisampling.is_some() && format.multisampling.is_none() { - continue; - } - current_software_result = Some((id.clone(), format.clone())); if format.hardware_accelerated { current_result = Some((id, format)); diff --git a/src/win32/init.rs b/src/win32/init.rs index 5cf4021..d83c90f 100644 --- a/src/win32/init.rs +++ b/src/win32/init.rs @@ -490,8 +490,21 @@ unsafe fn enumerate_arb_pixel_formats(extra: &gl::wgl_extra::Wgl, hdc: &WindowWr stencil_bits: get_info(index, gl::wgl_extra::STENCIL_BITS_ARB) as u8, stereoscopy: get_info(index, gl::wgl_extra::STEREO_ARB) != 0, double_buffer: get_info(index, gl::wgl_extra::DOUBLE_BUFFER_ARB) != 0, - multisampling: None, // FIXME: - srgb: false, // FIXME: + multisampling: { + if is_extension_supported(extra, hdc, "WGL_ARB_multisample") { + match get_info(index, gl::wgl_extra::SAMPLES_ARB) { + 0 => None, + a => Some(a as u16), + } + } else { + None + } + }, + srgb: if is_extension_supported(extra, hdc, "WGL_ARB_framebuffer_sRGB") { + get_info(index, gl::wgl_extra::FRAMEBUFFER_SRGB_CAPABLE_ARB) != 0 + } else { + false + }, }, index as libc::c_int)); } |