无法使用 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 函数就可以了。
我正在使用 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 函数就可以了。