我正在使用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
);
我错过了什么吗?
答案 0 :(得分:2)
根据keltar的评论,SDL_PIXELFORMAT_NV12需要硬件加速。
一种解决方案是使用支持NV12像素格式的OpenGL渲染器。
所以,设置提示如下: SDL_SetHint(SDL_HINT_RENDER_DRIVER,“opengl”);并将SDL_RENDERER_ACCELERATED标志设置为SDL_CreateRenderer函数就可以了。