SDL_CreateWindow 在设置 SDL_WINDOW_VULKAN 标志时失败
SDL_CreateWindow fails when SDL_WINDOW_VULKAN flag set
当我尝试运行这个代码时
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 函数。你可以 link 任何你不使用的库,它不会触发任何警告或问题。
尝试编译
int main() { return 0; }
并添加您想要的所有 link 标志。
错误告诉您您没有在启用 vulkan 支持的情况下编译 SDL 二进制文件。您需要手动编译 SDL。如果没有设置编译标志,Vulkan 可能会被 macroe'd 淘汰。
顺便说一下,我查看了 ubuntu 包中的 libsdl2 规则(我猜你有 ubunt 18.04 >),实际上 vulkan 被禁用了
# the SDL module for Vulkan not compiling even in Linux at the moment
confflags += --disable-video-vulkan
当我尝试运行这个代码时
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 函数。你可以 link 任何你不使用的库,它不会触发任何警告或问题。
尝试编译
int main() { return 0; }
并添加您想要的所有 link 标志。
错误告诉您您没有在启用 vulkan 支持的情况下编译 SDL 二进制文件。您需要手动编译 SDL。如果没有设置编译标志,Vulkan 可能会被 macroe'd 淘汰。
顺便说一下,我查看了 ubuntu 包中的 libsdl2 规则(我猜你有 ubunt 18.04 >),实际上 vulkan 被禁用了
# the SDL module for Vulkan not compiling even in Linux at the moment
confflags += --disable-video-vulkan