从概念上讲,SDL2中的渲染器和纹理是什么?

Dia*_*iaz 2 sdl sdl-2

我正在从SDL转向SDL2,并对引入的"渲染和纹理"系统感到困惑.

回到SDL,最常见的操作是在屏幕上创建Surface和BlitSurface.现在似乎有使用渲染器和纹理的趋势.但是,从我的观点来看,这是非常慢的(在编码开销方面).为什么我不能像以前一样只负载_BMP和BlitSurface?从整个窗口渲染器纹理的东西可以带来什么好处?

我读了几个线程什么是SDL渲染器?但还是有点混乱.

所以..

  1. 旧的Surface方式是否适用于SDL2?

  2. 渲染器和纹理有什么意义?(可能是关于硬件加速,根据一点点谷歌搜索,但不知道这意味着什么)

jpw*_*jpw 5

您可能需要查看SDL2 的迁移指南,它提供了有关处理2D图形的新方法的信息.

使用纹理而不是表面的关键是纹理在GPU上运行并加载到视频内存中,并且表面在CPU中与系统内存一起工作,并且因为GPU比CPU更适合处理图形,所以它会更快.此外,渲染器隐藏了所使用的底层系统(可能是D3D,OpenGL或其他东西).

您仍然可以加载曲面,但在渲染之前必须将它们转换为纹理,或者使用SDL_ UpdateWindowSurfaceSDL_GetWindowSurface函数; 后一个链接包含一个如何使用它们的示例.

至于SDL2方法很慢,正如你断言的那样,我不同意你,你设置窗口和渲染器一次,加载纹理就像加载表面一样,将它们复制到渲染器而不是blitting,最后使用SDL_RenderPresent而不是SDL_Flip.真的没那么不同:)

但是,看看迁移指南,它有您正在寻找的信息.