首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Wayland,Xlib,XCB,MIR窗口系统的预处理符号

Wayland,Xlib,XCB,MIR窗口系统的预处理符号
EN

Stack Overflow用户
提问于 2016-05-08 05:35:08
回答 2查看 1K关注 0票数 2

在Vulkan文档中,我们有以下关于WSI平台的内容:

Vulkan API不定义任何类型的平台对象。定义了特定于平台的WSI扩展,其中包含使用WSI的特定于平台的功能.这些扩展的使用由预处理符号来保护。 ·VK_USE_PLATFORM_ANDROID_KHR - Android ·VK_USE_PLATFORM_MIR_KHR -和平号 ·VK_USE_PLATFORM_WAYLAND_KHR - Wayland ·VK_USE_PLATFORM_WIN32_KHR - Microsoft ·VK_USE_PLATFORM_XCB_KHR -X窗口系统,使用XCB库 ·VK_USE_PLATFORM_XLIB_KHR -X窗口系统,使用Xlib库

我知道我应该选择一个平台或窗口系统,然后在编译之前定义正确的符号。在使用Android或Windows进行编译时,我只需编写如下内容:

代码语言:javascript
运行
复制
#if defined(ANDROID) || defined (__ANDROID__)
  #define VK_USE_PLATFORM_ANDROID_KHR 1
#elif defined(_WIN32)
  #define VK_USE_PLATFORM_WIN32_KHR 1
#endif

到目前为止好的。Android和Windows都有自己独特的窗口系统,这已经足够好了。但是Linux有几个窗口系统- Xlib、XCB、Wayland和MIR、afaik。

我想知道是否有一个C/C++ 预处理器符号,它可以帮助知道哪个窗口系统是该环境所使用的,这样就可以编写能够处理每个API的通用代码,而不会造成混乱。

EN

Stack Overflow用户

发布于 2016-05-09 12:19:58

如果您是与窗口系统的接口,那么您已经知道您需要什么样的预处理器符号。

如果您不是作为应用程序代码(使用本机窗口周围的包装器),那么您将要求包装器提供vkSurface,如果这是不可用的,那么向包装器的维护人员提出一个问题。

如果您是一个vulkan库,那么您应该能够处理所有linux窗口选项。如果启用所有预处理符号并根据需要手动加载所需函数,则取决于应用程序调用的函数。

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37096579

复制
相关文章

相似问题

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