rust - 如何使用 winit rust crate 中的 raw_window_handle() 方法?
问题描述
我正在尝试按照adrien ben 的 vulkan-tutorial使用 Rust创建我的第一个Vulkan 应用程序。
随着我提交 1.2.1的进展,我注意到他正在为 Windows 创建 winit-window。
因为我在我的Linux 系统上开发应用程序,所以我决定离开预先编写好的路径,并尝试自己实现窗口部分。
所以我偶然发现了ash-window-crate,它给了我一个create-surface()
需要 awindow-handle
作为参数的方法。
我的问题如下:
我无法从我的 winit-window调用raw-window-handle 函数,尽管 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(); };
锈编译器抱怨:
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 编程语言很陌生,我对特征的概念不是很熟悉,因此非常感谢任何帮助。
解决方案
欢迎来到 StackOverflow。
window
确实实现了该特征HasRawWindowHandle
,并且该create_surface
函数希望传递一个实现该特征的窗口对象。
这告诉我们,在 内部的某个地方create_surface
,它将调用raw_window_handle
该对象。
但是在您的代码中,您已经获取了window
'sraw_window_handle
并将其传递给函数。
所以现在create_surface
想得到raw_window_handle
你的raw_window_handle.
长话短说,只需尝试传入&window
而不是&window.raw_window_handle()
.
推荐阅读
- python - Python sklearn PCA 保持最低的方差向量
- javascript - 为什么这些类似的反应函数传递语句以不同的方式工作?
- firebase - Firebase - 如何设置规则以便只有函数可以写入实时数据库?
- python - 我想构建一个函数,将excel中的公式字符串从绝对引用转换为相对引用
- python - 在 SQLAlchemy 中的一对多关系的模型中设置属性
- arrays - LUA 中数组操作的时间复杂度
- reactjs - React Native 删除项目和按钮
- java - 在可运行的 jar 中包含音频文件 - eclipse
- c - 将 Core Image Kernel Language 函数转换为 Metal Shading Language
- python - python 中的单元测试——我们可以在 python 中模拟 SQL 查询结果吗?