将 Vulkan 与 SFML 一起使用?
Using Vulkan with SFML?
我目前正在使用 GLFW window 创建和用户输入。 GLFW 只允许我们说:
glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
告诉 GLFW 没有使用 OpenGL。它甚至提供像
这样的功能
glfwCreateWindowSurface(...)
为不同平台自动创建window表面。
有什么方法可以用 SFML 做类似的事情吗?我在他们的网站上找不到任何关于它的信息,所以我认为答案是否定的。但也许存在某种黑客攻击,或者不建议这样做?
这还没有集成到 SFML 中,但是 there's an open pull request adding/discussing this feature。
下一个次要版本支持 Vulkan; SFML 2.6.0.
新的 sf::WindowBase
class,作为所有 Windows 的基础 class。它为操作 window 提供了一个简单的界面:移动、调整大小、show/hide、控制鼠标光标等。它还通过其 pollEvent() 和 waitEvent() 函数提供事件处理。
sf::Window
still serves as a target for OpenGL rendering, but it now inherits the above functionality from sf::WindowBase. This design choice was done, so as to not break existing code: see the full discussion for info.
新的 sf::WindowBase
默认情况下不创建 OpenGL 上下文。相反,它提供了一个具有以下定义的 public 成员函数 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);
用法演示(约 2600 行代码),可在 examples in the SFML respiratory 下找到。
我目前正在使用 GLFW window 创建和用户输入。 GLFW 只允许我们说:
glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
告诉 GLFW 没有使用 OpenGL。它甚至提供像
这样的功能glfwCreateWindowSurface(...)
为不同平台自动创建window表面。
有什么方法可以用 SFML 做类似的事情吗?我在他们的网站上找不到任何关于它的信息,所以我认为答案是否定的。但也许存在某种黑客攻击,或者不建议这样做?
这还没有集成到 SFML 中,但是 there's an open pull request adding/discussing this feature。
下一个次要版本支持 Vulkan; SFML 2.6.0.
新的 sf::WindowBase
class,作为所有 Windows 的基础 class。它为操作 window 提供了一个简单的界面:移动、调整大小、show/hide、控制鼠标光标等。它还通过其 pollEvent() 和 waitEvent() 函数提供事件处理。
sf::Window
still serves as a target for OpenGL rendering, but it now inherits the above functionality from sf::WindowBase. This design choice was done, so as to not break existing code: see the full discussion for info.
新的 sf::WindowBase
默认情况下不创建 OpenGL 上下文。相反,它提供了一个具有以下定义的 public 成员函数 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);
用法演示(约 2600 行代码),可在 examples in the SFML respiratory 下找到。