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

What is Renderer and Texture in SDL2, conceptually?

我从SDL迁移到SDL2,并对引入的"渲染和纹理"系统感到困惑。

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

我读过几个线程什么是SDL渲染器? 但仍然有些混乱。

所以..

  • 旧的Surface方式可以在SDL2中使用吗?

  • 渲染器和纹理有什么意义? (可能有点儿谷歌搜索,可能是关于硬件加速的问题,但不确定是什么意思)


  • 您可能想看一下SDL2的迁移指南,它提供了有关处理2D图形的新方法的信息。

    使用纹理代替表面的要点是纹理可以在GPU上工作并加载到视频内存中,而表面可以通过CPU在系统内存中工作,并且由于GPU比CPU更适合处理图形,因此它会更快。同样,渲染器隐藏使用的底层系统(可以是D3D,OpenGL或其他东西)。

    您仍然可以加载表面,但是必须在渲染表面之前将其转换为纹理,或者使用SDL_UpdateWindowSurface和SDL_GetWindowSurface函数;后一个链接包含有关如何使用它们的示例。

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

    但是,请查看迁移指南,它提供了您所需要的信息。