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

时间:2017-01-13 14:06:06

标签: c sdl sdl-2

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

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

以下是代码:

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
);

我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

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

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

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