繁体   English   中英

将光晕::帧缓冲区转换为 u64

[英]Convert glow::Framebuffer to u64

egui::Image::new可以将User(u64)作为第一个参数。 我有一个发光::Framebuffer,我想像这样传递给 function

egui::Image::new(User(frame_buffer), egui::Vec2::new(1280.0, 720.0));

看起来glow::FrambufferNativeFramebuffer(NonZeroU32) 如何将glow::Framebuffer转换为u64

NonZeroU64实现了From<NonZeroU32>u64实现了From<NonZeroU64> ,所以你可以使用这两种类型的from方法来安全地转换类型。 这是一个简短的例子。

use std::num::*;
#[derive(Debug)]
struct NativeFrameBuffer(NonZeroU32);

#[derive(Debug)]
struct User(u64);

fn test(u:User) {
    println!("{:?}", u);
}

fn main() {
    let u32num = NonZeroU32::new(10u32).unwrap();
    let fb = NativeFrameBuffer(u32num);
    test(User(u64::from(NonZeroU64::from(fb.0))));
}

我这样解决了

    pub  fn unwrap_color_attachment(&self) -> u32 {
        #[cfg(not(target_os = "wasm"))]
        unsafe { mem::transmute(self.color_attachment) }
    }

egui::Image::new(User(my_framebuffer_wrapper.unwrap_color_attachment() as u64), egui::Vec2::new(1280.0, 720.0));

不安全是必需的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM