如何解决如何使用 winit rust crate 中的 raw_window_handle() 方法?
我正在尝试按照 adrien ben's vulkan-tutorial.
使用 Rust 创建我的第一个 Vulkan 应用程序当我进入 commit 1.2.1 时,我注意到他正在为 Windows 创建 winit-window。
因为我是在我的 Linux 系统上开发应用程序,所以我决定离开预先编写好的路径,并尝试自己实现窗口部分。
所以我偶然发现了 ash-window-crate,它为我提供了一个需要 create-surface()
作为参数的 window-handle
方法。
我的问题如下:
我无法从我的 winit-window 调用 raw-window-handle 函数,尽管 docs of winit 建议 Window-Struct 实现了 HasRawWindowHandle-Trait,据我所知,这会暴露上述功能。
我正在尝试像这样创建 KHRSurface:
let window = WindowBuilder::new().build(&events_loop).unwrap();;
let surface_khr = unsafe { create_surface(&entry,&instance,&window.raw_window_handle(),None).unwrap(); };
和 rust 编译器抱怨:
error[E0277]: the trait bound `RawWindowHandle: HasRawWindowHandle` is not satisfied
--> src/main.rs:46:70
|
46 | let surface_khr = unsafe { create_surface(&entry,None).unwrap(); };
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `HasRawWindowHandle` is not implemented for `RawWindowHandle`
|
= note: required for the cast to the object type `dyn HasRawWindowHandle`
由于我对 Rust 编程语言还很陌生,所以我对特征的概念不是很熟悉,因此非常感谢任何帮助。
解决方法
欢迎使用 StackOverflow。
window
确实实现了 HasRawWindowHandle
trait,而 create_surface
函数想要传递一个实现此 trait 的 window 对象。
这告诉我们,在 create_surface
内部的某个地方,它将对该对象调用 raw_window_handle
。
但是在您的代码中,您已经获取了 window
的 raw_window_handle
并将那个传递到函数中。
所以现在 create_surface
想要获取您的 raw_window_handle
raw_window_handle.
长话短说,只需尝试传入 &window
而不是 &window.raw_window_handle()
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。