exposed_gl/
picker.rs

1use crate::{platform::GlPixelFormat, tokens, GlConfigPicker};
2
3#[derive(Debug, Default)]
4pub struct GlDefaultPicker {
5    values: [i32; 3],
6}
7
8impl GlConfigPicker for GlDefaultPicker {
9    fn pick(&mut self, pixel_format: GlPixelFormat) -> Option<usize> {
10        #[rustfmt::skip]
11        let attributes = [
12            tokens::COLOR_BITS_ARB,
13            tokens::SAMPLE_BUFFERS_ARB,
14            tokens::SAMPLES_ARB,
15        ];
16
17        let mut values = unsafe { std::mem::zeroed() };
18
19        pixel_format.get(&attributes, &mut values).ok()?;
20
21        if values[2] > self.values[2] {
22            self.values = values;
23            return Some(pixel_format.format);
24        }
25
26        if values[0] > self.values[0] {
27            self.values = values;
28            return Some(pixel_format.format);
29        }
30
31        None
32    }
33}