无法使用 SDL_PIXELFORMAT_NV12 像素格式创建 SDL2 纹理

Can't create SDL2 texture using SDL_PIXELFORMAT_NV12 pixel format

我正在使用 SDL 2.0.5 和 Windows 10 创建 window 并显示纹理。

使用 SDL_PIXELFORMAT_YV12 像素格式初始化纹理时一切正常,但是当我将格式设置为 SDL_PIXELFORMAT_NV12 时,SDL_CreateTexture 函数 returns 为空。

代码如下:

SDL_Window* window = SDL_CreateWindow(
    "Test",
    SDL_WINDOWPOS_UNDEFINED,
    SDL_WINDOWPOS_UNDEFINED,
    width,
    height,
    SDL_WINDOW_FULLSCREEN_DESKTOP
);

SDL_Renderer* renderer = SDL_CreateRenderer(window , -1, SDL_RENDERER_SOFTWARE);

SDL_Texture* texture = SDL_CreateTexture(
    renderer,
    SDL_PIXELFORMAT_NV12,
    SDL_TEXTUREACCESS_STREAMING,
    width,
    height
);

我是不是漏掉了什么?

根据 keltar 的评论,SDL_PIXELFORMAT_NV12 需要硬件加速。

一种解决方案是使用支持 NV12 像素格式的 OpenGL 渲染器。

所以,设置提示如下: SDL_SetHint(SDL_HINT_RENDER_DRIVER, "opengl");并将 SDL_RENDERER_ACCELERATED 标志设置为 SDL_CreateRenderer 函数就可以了。