我正在从SDL迁移到SDL2,并对'render& amp;纹理'系统介绍。
回到SDL,最常见的操作是在屏幕上创建Surface's和BlitSurface。现在似乎有使用渲染器和纹理的趋势。但是,从我的观点来看,这是非常慢的(在编码开销方面)。为什么我不能像以前一样只负载_BMP和BlitSurface?从整个窗口 - 渲染器 - 纹理的东西可以引入什么好处?
我已经阅读了几个帖子What is a SDL renderer?,但仍然有些混乱。
所以..
旧的Surface方式是否适用于SDL2?
Renderer& amp;是什么意思?质地? (可能是关于硬件加速,根据一点点谷歌搜索,但不知道这意味着什么)
答案 0 :(得分:5)
您可能需要查看SDL2的migration guide,它提供了有关处理2D图形的新方法的信息。
使用纹理而不是表面的关键是纹理在GPU上运行并加载到视频内存中,并且表面与CPU一起工作在系统内存中,因为GPU比CPU更适合处理图形,所以它会更快。此外,渲染器隐藏了使用的底层系统(可能是D3D,OpenGL或其他东西)。
您仍然可以加载曲面,但在渲染曲面之前必须将它们转换为纹理,或者使用SDL _ UpdateWindowSurface和SDL_GetWindowSurface函数;后一个链接包含一个如何使用它们的例子。
至于SDL2方法很慢,正如你断言的那样,我不同意你,你设置窗口和渲染器一次,像加载表面一样加载纹理,将它们复制到渲染器而不是blitting和最后使用SDL_RenderPresent而不是SDL_Flip。真的没那么不同:))
但是,看看migration guide,它有您正在寻找的信息。