当我尝试运行这段代码时
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 库链接并不意味着 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
我是一名优秀的程序员,十分优秀!