首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在build_vk_surface对象上调用WindowBuild ()

无法在build_vk_surface对象上调用WindowBuild ()
EN

Stack Overflow用户
提问于 2020-11-10 20:10:27
回答 1查看 630关注 0票数 0

我遵循vulkano教程打开一个窗口并使用vulkano-win创建一个曲面。

本教程的大部分时间都是日期,到目前为止,我已经能够解决这个问题,但是我还没有找到解决方案。

当前,当我调用let window = WindowBuilder::new().build_vk_surface(&events_loop, instance.clone())时,我会得到以下错误

error[E0599]: no method named build_vk_surface found for struct winit::window::WindowBuilder in the current scope

我已经检查了库和vulkano_win版本,它似乎正确地扩展了WindowBuilder,我将在下面的Cargo.toml中发布依赖项。

代码语言:javascript
复制
[dependencies]
vulkano = "0.19"
vulkano-shaders = "0.18"
winit = "0.23"
vulkano-win = "0.19"
image = "0.23"

P.S. -这里有一个遗留的vulkano_win版本(2年前)发生了这种情况。我怀疑这个问题已经解决了,因为我已经检查了vulkano_win库的依赖项,并且它们使用了winit的更新和重组版本:https://github.com/vulkano-rs/vulkano/issues/943

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-10 21:38:43

我已经检查了库和vulkano_win版本,它似乎正确地扩展了WindowBuilder,我将在下面的Cargo.toml中发布依赖项。

总之,你是对的。问题是,VkSurfaceBuild特性是为winit0.22的WindowBuilder而不是winit0.23的WindowBuilder实现的。

因此,要解决问题,需要更新Cargo.toml以使用winit 0.22而不是0.23。

示例:

代码语言:javascript
复制
[dependencies]
vulkano = "0.19"
vulkano-shaders = "0.19"
vulkano-win = "0.19"
winit = "0.22"

此外,您的困惑可能来自浏览存储库。在存储库中,武尔卡诺示例都使用winit0.23。但是,请记住,存储库的当前状态不一定与在0.19中发布的状态相同。

在GitHub上,您可以选择标记,并查看提交,即0.19释放。如果然后查看武尔卡诺示例,您将看到它们都使用winit0.22。

如果您真的想使用winit 0.23。然后,您可以直接依赖于存储库。如下所示:

代码语言:javascript
复制
[dependencies]
vulkano = { git = "https://github.com/vulkano-rs/vulkano" }
vulkano-win = { git = "https://github.com/vulkano-rs/vulkano" }
vulkano-shaders = { git = "https://github.com/vulkano-rs/vulkano" }
winit = "0.23"

然而,对存储库的一次重大更改可能会破坏您的构建。所以要谨慎使用。

如何能够确定该特性是如何在0.22 WindowBuilder而不是0.23 WindowBuilder上实现的?

不确定是否有一种奇特的方法,但一种简单的方法是直接转到VkSurfaceBuild on docs.rs,然后在“easy上的实现”(Implementations)中单击WindowBuilder,然后重定向到winit 0.22.2文档

或者,您也可以检查您的Cargo.lock。如果尝试使用winit 0.23,那么Cargo.lock将包含两个winit版本:

代码语言:javascript
复制
[[package]]
name = "winit"
version = "0.22.2"
...

[[package]]
name = "winit"
version = "0.23.0"
...

如果您然后查看vulkano-win,那么您可以看到它使用winit 0.22.2

代码语言:javascript
复制
[[package]]
name = "vulkano-win"
version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b9a02addddf5532396d11dbb822f77d87ca17a00c918e4c8a0a125d6c207e2b"
dependencies = [
 "cocoa 0.20.2",
 "metal",
 "objc",
 "vulkano",
 "winit 0.22.2",
]

如果没有重复的版本,它只会像其他版本一样说"winit"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64776095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档