如何使用 winit Rust crate 中的 raw_window_handle() 方法?
How do I use the raw_window_handle() method from winit rust crate?
我正在尝试使用 Rust 创建我的第一个 Vulkan 应用程序 adrien ben's vulkan-tutorial.
当我进入 commit 1.2.1 时,我注意到他正在为 Windows.
创建 winit-window
因为我正在 Linux-系统 上开发应用程序,所以我决定离开预先编写的路径,并尝试实现 window我自己。
所以我偶然发现了 ash-window-crate,它给了我一个需要 window-handle
作为参数的 create-surface()
方法。
我的问题如下:
我无法从我的 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, &instance, &window.raw_window_handle(), None).unwrap(); };
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `HasRawWindowHandle` is not implemented for `RawWindowHandle`
|
= note: required for the cast to the object type `dyn HasRawWindowHandle`
由于我是 Rust 编程语言的新手,我对 traits 的概念不是很熟悉,因此非常感谢任何帮助。
欢迎来到 Whosebug。
window
确实实现了 HasRawWindowHandle
特征,create_surface
函数希望传递一个实现该特征的 window 对象。
这告诉我们,在 create_surface
内部的某处,它将对该对象调用 raw_window_handle
。
但是在您的代码中,您 已经抓住了 window
的 raw_window_handle
并传递了 that进入函数。
所以现在 create_surface
想要得到 raw_window_handle.
的 raw_window_handle
长话短说,只需尝试传入 &window
而不是 &window.raw_window_handle()
。
我正在尝试使用 Rust 创建我的第一个 Vulkan 应用程序 adrien ben's vulkan-tutorial.
当我进入 commit 1.2.1 时,我注意到他正在为 Windows.
创建 winit-window因为我正在 Linux-系统 上开发应用程序,所以我决定离开预先编写的路径,并尝试实现 window我自己。
所以我偶然发现了 ash-window-crate,它给了我一个需要 window-handle
作为参数的 create-surface()
方法。
我的问题如下:
我无法从我的 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, &instance, &window.raw_window_handle(), None).unwrap(); };
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `HasRawWindowHandle` is not implemented for `RawWindowHandle`
|
= note: required for the cast to the object type `dyn HasRawWindowHandle`
由于我是 Rust 编程语言的新手,我对 traits 的概念不是很熟悉,因此非常感谢任何帮助。
欢迎来到 Whosebug。
window
确实实现了 HasRawWindowHandle
特征,create_surface
函数希望传递一个实现该特征的 window 对象。
这告诉我们,在 create_surface
内部的某处,它将对该对象调用 raw_window_handle
。
但是在您的代码中,您 已经抓住了 window
的 raw_window_handle
并传递了 that进入函数。
所以现在 create_surface
想要得到 raw_window_handle.
raw_window_handle
长话短说,只需尝试传入 &window
而不是 &window.raw_window_handle()
。