[英]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::Frambuffer
是NativeFramebuffer(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.