我尝试使用Qt来呈现Vulkan的渲染结果,而不是glfw
。我知道Qt提供QVulkanInstance
和QVulkanWindow
,但我喜欢用我的代码来控制Vulkan。
在Windows中,我有一个QWindow
的HWND
,如下所示:
[[maybe_unused]] auto wid = winId();
auto* platformInterface = QGuiApplication::platformNativeInterface();
auto* handle = platformInterface->nativeResourceForWindow("handle", this);
auto* hwnd = static_cast<HWND>(handle);
vk::Win32SurfaceCreateInfoKHR surfaceInfo{};
surfaceInfo.setHwnd(hwnd);
surfaceInfo.setHinstance(GetModuleHandle(nullptr));
我使用surfaceInfo
成功创建了vk::SurfaceKHR
。
但是,当我尝试在macos中这样做时:
[[maybe_unused]] auto wid = winId();
auto* platformInterface = QGuiApplication::platformNativeInterface();
auto* handle = platformInterface->nativeResourceForWindow("nsview", this);
auto* nsview= static_cast<NSView*>(handle);
我得到了unknown type name NSView
的错误,我以为我可以像HWND
一样使用NSView
,但我不能。
我正在使用Qt6,我发现QMacNativeWidget
提供了一个nativeView
函数来返回NSView*
,但QMacNativeWidget
已在Qt6中删除。
1条答案
按热度按时间31moq8wy1#
我得到了未知类型名称NSView的错误,我以为我可以像HWND一样使用NSView,但我不能。
您应该发布确切的错误,因为这听起来更像是一个丢失的包含文件。这个错误是在编译时发生的还是在实际运行应用程序时发生的?
此外,
winId
应该可以直接转换为Windows上的HWND
和MacOS上的NSView*
: