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

问题描述 投票:0回答:1

我正在尝试使用我的自定义版本的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_GetWindowSurface失败,并显示No hardware accelerated renderers available,并返回NULL。

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

rendering sdl-2
1个回答
0
投票
我想我是自己想出来的。

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

© www.soinside.com 2019 - 2024. All rights reserved.