1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
use crate::prelude::*;
pub struct ColorBuffer {
pub width : usize,
pub height : usize,
pub pixels : Vec<PTF>,
pub frames : usize,
}
impl ColorBuffer {
pub fn new(width: usize, height: usize) -> Self {
Self {
width,
height,
pixels : vec![0.0; width * height * 4],
frames : 0,
}
}
pub fn convert_to_u8(&self, frame: &mut [u8]) {
for y in 0..self.height {
for x in 0..self.width {
let o = x * 4 + y * self.width * 4;
let c = [(self.pixels[o].powf(0.4545) * 255.0) as u8, (self.pixels[o+1].powf(0.4545) * 255.0) as u8, (self.pixels[o+2].powf(0.4545) * 255.0) as u8, (self.pixels[o+3] * 255.0) as u8];
frame[o..o + 4].copy_from_slice(&c);
}
}
}
}