仅使用软件渲染编译时,SDL_CreateRenderer失败

我正在尝试使用自定义的SDL2编译项目(tyr-quake)。我的SDL2构建会禁用所有加速的视频(OpenGL,Op​​enGLES,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_GetWindowSurfaceNo hardware accelerated renderers available失败并返回NULL。

我的问题是:使用KMSDRM时,是否可以使用SDL进行软件渲染,还是我需要启用某些硬件加速渲染选项并可用?

qq579694 回答:仅使用软件渲染编译时,SDL_CreateRenderer失败

我想我自己想通了。

不可能这样做。但是,如果要这样做,可以实现CreateWindowFramebufferUpdateWindowFramebufferDestroyWindowFramebuffer,并设置适当的函数指针,这将使您能够创建纯基于软件的渲染器。可悲的是,我对KMS和DRM的了解还不足以自己实现。

本文链接:https://www.f2er.com/3045725.html

大家都在问