我正在尝试使用自定义的SDL2编译项目(tyr-quake)。我的SDL2构建会禁用所有加速的视频(OpenGL,OpenGLES,Vulkan,Metal等),X11和Wayland,但启用KMSDRM。
一切都很好,我也想用此SDL2版本编译的项目也已编译。除了运行时,SDL_CreateRenderer
返回Couldn't find matching render driver
(即使我修改了源以传递它SDL_RENDERER_SOFTWARE
并将SDL_HINT_FRAMEBUFFER_ACCELERATION
提示设置为"0"
)。>
我稍微看了一下SDL源代码,确实调用了软件SW_CreateRenderer
,但是稍后(在SDL_CreateWindowTexture
中),它仍然想使用其他渲染驱动器创建渲染器(它明确避免使用该软件)。
我还尝试修补源代码以执行以下操作:
SDL_Surface *surface = SDL_GetWindowSurface(sdl_window);
renderer = SDL_CreateSoftwareRenderer(surface);
但这也失败了,因为SDL_GetWindowSurface
以No hardware accelerated renderers available
失败并返回NULL。
我的问题是:使用KMSDRM时,是否可以仅使用SDL进行软件渲染,还是我需要启用某些硬件加速渲染选项并可用?
答案 0 :(得分:1)
我想我自己想通了。
不可能这样做。但是,如果要这样做,可以实现CreateWindowFramebuffer
,UpdateWindowFramebuffer
和DestroyWindowFramebuffer
,并设置适当的函数指针,这将使您能够创建纯基于软件的渲染器。可悲的是,我对KMS和DRM的了解还不足以自己实现。