SDL_CreateWindow在设置标志时失败SDL_WINDOW_VULKAN

SDL_CreateWindow fails when SDL_WINDOW_VULKAN flag set

本文关键字:SDL 失败 VULKAN WINDOW 设置 CreateWindow 标志      更新时间:2023-10-16

当我尝试运行此代码时

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

安装工作 GPU 驱动程序并链接 Vulkan 后, 我得到这个输出:

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

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

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

尝试编译

int main() { return 0; }

并添加所需的所有链接标志。

该错误告诉您,您拥有的 SDL 二进制文件未在启用 vulkan 支持的情况下进行编译。您需要手动编译 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