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

时间:2014-02-21 23:49:59

标签: sdl sdl-2

我正在从SDL迁移到SDL2,并对'render& amp;纹理'系统介绍。

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

我已经阅读了几个帖子What is a SDL renderer?,但仍然有些混乱。

所以..

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

  2. Renderer& amp;是什么意思?质地? (可能是关于硬件加速,根据一点点谷歌搜索,但不知道这意味着什么)

1 个答案:

答案 0 :(得分:5)

您可能需要查看SDL2的migration guide,它提供了有关处理2D图形的新方法的信息。

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

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

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

但是,看看migration guide,它有您正在寻找的信息。