获取 SFML 窗口的 HWND 和高可用性?
Getting HWND and HInstance of SFML window?
我一直找不到关于这个的任何信息。给定一个使用 SFML 创建的窗口(当然假设在 Windows 上(:
sf::Window window(sf::VideoMode(800, 600), "My window");
是否可以获取创建窗口的实际 HWND 和 HInstance?一些getter?或者也许是一个巧妙的黑客?
像这样:
window.getHWND()
window.getHInstance()
这将是非常理想的,但它确实存在。任何建议不胜感激。
更新
这不是这个问题的重复,因为我专门问如何检索 SFML 窗口的 HWND 和 HInstance。而不是如何将 Vulkan 与 SFML 集成。因此,SFML窗口已经具有交换链的问题与这个问题无关,与另一个无关。我只是包括上下文,以防有人想知道。很抱歉造成混乱。
您要查找的是sf::Window::getSystemHandle()
,它将返回一个sf::WindowHandle
,它依赖于平台,在 Windows 上它基本上是HWND
.
要获取HINSTANCE
,请使用您自己的WinMain()
入口点或调用GetModuleHandle(NULL);
只要您不编写库。
这实际上是使用 Vulkan with SFML?的副本,但作为 XY 问题提出。
OpenGL似乎是SFML的硬依赖。我假设SFML立即调用SetPixelFormat
,并在其上创建OpenGL交换链(即"上下文"(。
如果是这样,那就无法在Vulkan中使用。如果它有效,那只是因为未定义的行为,或者因为不兼容的 Vulkan 实现。
在 Vulkan 规范中的两个地方讨论了它。
首先,附录VK_KHR_win32_surface
问题2(彻底介绍了它。总之,它说:
多个图形 API 使用窗口对象会导致未定义的行为。
其次,在vkCreateSwapchainKHR
行为中,它说:
如果
surface
引用的本机窗口已与非 Vulkan 图形 API 图面关联,则必须返回VK_ERROR_NATIVE_WINDOW_IN_USE_KHR
。
- 获取 SFML 窗口的 HWND 和高可用性?
- 将 Boost.Fiber 与 Goroutines 进行比较可以纠正可用性
- 如何在源代码中使用执行策略检测 C++17 的扩展内存管理算法的可用性?
- 功能可用性
- 为什么有条件编译运算符模板会更改另一个运算符的可用性?
- C++宏来测试__func__、__FUNCTION__、__PRETTY_FUNCTION__等的可用性
- 检测此变量可用性
- 如何在变量函数参数列表中检测给定类型的参数的可用性,并在处理完所有参数后采取行动
- static_assert C 的可用性11
- 测试 x_np pthread 函数的可用性 - C/C++
- make_unique Xcode5 中的可用性
- 检测Visual Studio中SSE/SSE2指令集的可用性
- 使用boost检查端口可用性
- 在确保翻译单元之间的可用性时,不赞成使用静态
- Internet可用性通知.net vs native (c++)
- c++中结构体名称的可用性
- Qt -用预处理器指令检查链接的.lib在windows上的可用性
- 检查矢量的可用性(性能问题)
- c++结构中private和protected的可用性
- c++中的代码可用性