【发布时间】:2023-10-01 17:44:01
【问题描述】:
关于带有经常更新的扩展菜单的窗口的一般性问题,但实际屏幕仅更新了大约 10%。如果文本保持不变。
SDL2 使用渲染和纹理来利用硬件加速,但也允许软件渲染。
我的问题是:
- 使用 SDL_CreateRender()/hardware-render 在每次只有 10% 的菜单实际发生变化时绘制整个菜单时直接渲染到硬件,每次重绘整个屏幕/菜单是否更快?或者:
- 使用 SDL_CreateSoftwareRenderer() / software-render 将整个菜单写入 RAM 一次,然后只更新实际更改的 10% 是否更快?
【问题讨论】:
-
要确定的个人资料。(但我会说这并不重要,除非它开始滞后。)此外,还有第三种方法应该是方便,我假设最快:您可以将菜单的静态部分硬件渲染为纹理,然后在每一帧进行硬件渲染。 (另外,如果你正在制作游戏,那么软件渲染可能不是一个选项,因为除了菜单之外的所有内容通常都会经常更新。)
-
我的猜测是,这在很大程度上取决于运行它的 PC,但硬件加速可能更快,即使完全重绘也是如此。但是,听起来它不是一个资源密集型应用程序,所以也许更容易编写和维护的应用程序是最好的。
-
谢谢大家。在一个问题上花费大量时间之前能够获得其他意见是很好的。最简单的方法是使用硬件渲染,每次都重新绘制整个窗口,因为它足够快。