Reuse input of rgba8_image_to_tex_image_data in some cases

This commit is contained in:
Anthony Ramine 2018-09-08 13:31:40 +02:00
parent 27951bb7c8
commit e192e4d97f

View file

@ -4008,7 +4008,7 @@ fn remove_premultiplied_alpha(pixels: &mut [u8]) {
fn rgba8_image_to_tex_image_data( fn rgba8_image_to_tex_image_data(
format: TexFormat, format: TexFormat,
data_type: TexDataType, data_type: TexDataType,
pixels: Vec<u8>, mut pixels: Vec<u8>,
) -> Vec<u8> { ) -> Vec<u8> {
// hint for vector allocation sizing. // hint for vector allocation sizing.
let pixel_count = pixels.len() / 4; let pixel_count = pixels.len() / 4;
@ -4106,20 +4106,19 @@ fn rgba8_image_to_tex_image_data(
} }
(TexFormat::Alpha, TexDataType::Float) => { (TexFormat::Alpha, TexDataType::Float) => {
let mut alpha = Vec::<u8>::with_capacity(pixel_count * 4); for rgba8 in pixels.chunks_mut(4) {
for rgba8 in pixels.chunks(4) { let p = rgba8[0] as f32;
alpha.write_f32::<NativeEndian>(rgba8[0] as f32).unwrap(); NativeEndian::write_f32(rgba8, p);
} }
alpha pixels
}, },
(TexFormat::Luminance, TexDataType::Float) => { (TexFormat::Luminance, TexDataType::Float) => {
let mut lum = Vec::<u8>::with_capacity(pixel_count * 4); for rgba8 in pixels.chunks_mut(4) {
for rgba8 in pixels.chunks(4) {
let p = luminance(rgba8[0], rgba8[1], rgba8[2]); let p = luminance(rgba8[0], rgba8[1], rgba8[2]);
luminance.write_f32::<NativeEndian>(p as f32).unwrap(); NativeEndian::write_f32(rgba8, p as f32);
} }
luminance pixels
}, },
(TexFormat::LuminanceAlpha, TexDataType::Float) => { (TexFormat::LuminanceAlpha, TexDataType::Float) => {