将Vulkan与SFML一起使用?

时间:2018-10-24 07:43:46

标签: c++ sfml vulkan

我目前正在使用GLFW进行窗口创建和用户输入。 GLFW只是让我们说:

glfwWindowHint(GLFW_CLIENT_API,GLFW_NO_API);

告诉GLFW不适用于OpenGL。它甚至提供了类似的功能

glfwCreateWindowSurface(...)

自动为不同平台创建窗口表面。

我可以用SFML做任何类似的事情吗?我在他们的网站上找不到任何相关信息,所以我认为答案是否定的。但是也许存在某种黑客手段,还是不建议这样做?

2 个答案:

答案 0 :(得分:2)

Vulkan 在下一个次要版本中得到支持; SFML 2.6.0

新的 sf::WindowBase 类,作为所有 Windows 的基类。它提供了一个用于操作窗口的简单界面:移动、调整大小、显示/隐藏、控制鼠标光标等。它还通过其 pollEvent() 和 waitEvent() 函数提供事件处理。

sf::Window 仍然作为 OpenGL 渲染的目标,但它现在从 sf::WindowBase 继承了上述功能。已完成此设计选择,以免破坏现有代码:see the full discussion for info

默认情况下,新的 sf::WindowBase 不会创建 OpenGL 上下文。相反,它提供了一个具有以下定义的公共成员函数 createVulkanSurface

////////////////////////////////////////////////////////////
/// \brief Create a Vulkan rendering surface
///
/// \param instance  Vulkan instance
/// \param surface   Created surface
/// \param allocator Allocator to use
///
/// \return True if surface creation was successful, false otherwise
///
////////////////////////////////////////////////////////////
bool createVulkanSurface(const VkInstance& instance, VkSurfaceKHR& surface, const VkAllocationCallbacks* allocator = 0);

可以在 examples in the SFML respiratory 下找到用法演示(大约 2.600 行代码)。

答案 1 :(得分:1)

此功能尚未集成到SFML中,但已集成到there's an open pull request adding/discussing this feature中。