【问题标题】:SDL_CreateWindow fails when SDL_WINDOW_VULKAN flag set设置 SDL_WINDOW_VULKAN 标志时,SDL_CreateWindow 失败
【发布时间】:2018-05-26 17:46:31
【问题描述】:

当我尝试运行这段代码时

if(SDL_Init(SDL_INIT_VIDEO) < 0)
    printf("%s\n", SDL_GetError());
if(!SDL_CreateWindow("test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE | SDL_WINDOW_VULKAN))
    printf("%s\n", SDL_GetError());

在安装工作的 gpu 驱动程序并链接 vulkan 后, 我得到这个输出:

Vulkan 支持未在 SDL 中配置或在视频驱动程序中不可用

我在 ubuntu 上运行 Geforce GTX 660M + 官方驱动程序和 SDL2 版本 2.0.8。似乎是 SDL 中的一个错误,但我想请教一下。

【问题讨论】:

  • 你的意思是其他使用 vulkan 的应用程序实际上工作正常?
  • 是的,我使用我的旧程序和 vulkaninfo 进行了测试
  • 您的 SDL 库是否配置了 Vulkan 支持? (假设其他应用程序不使用相同的共享库)。
  • 具体是如何工作的?包安装的头文件包含定义并且没有链接器问题。其他应用不使用 SDL

标签: c++ c sdl-2 vulkan


【解决方案1】:

与 vulkan 库链接并不意味着 SDL 实际上正在使用 vulkan 函数。您可以将任何内容与您不使用的库链接,并且不会触发任何警告或问题。

尝试编译

int main() { return 0; }

并添加您想要的所有链接标志。

错误是告诉您未在启用 vulkan 支持的情况下编译的 SDL 二进制文件。您需要手动编译 SDL。如果没有设置编译标志,Vulkan 可能会被宏删除。

顺便说一句,我在 ubuntu 包中查看了 libsdl2 的规则(我猜你有 ubunt 18.04 >),实际上 vulkan 已禁用

# the SDL module for Vulkan not compiling even in Linux at the moment
confflags += --disable-video-vulkan

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 2017-10-30
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多