【问题标题】:What is Renderer and Texture in SDL2, conceptually?从概念上讲,SDL2 中的渲染器和纹理是什么?
【发布时间】:2014-03-23 17:44:33
【问题描述】:

我正在从 SDL 迁移到 SDL2,对引入的“渲染和纹理”系统感到困惑。

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

我已经阅读了几个主题What is a SDL renderer?,但仍然有点困惑。

所以..

  1. 旧的 Surface 方式能否在 SDL2 中工作?

  2. 渲染器和纹理的意义何在? (根据谷歌搜索可能是关于硬件加速,但不确定这意味着什么)

【问题讨论】:

    标签: sdl sdl-2


    【解决方案1】:

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

    使用纹理而不是表面的意义在于,纹理在 GPU 上工作并加载到视频内存中,表面在 CPU 的系统内存中工作,由于 GPU 比 CPU 更适合处理图形,因此速度会更快。此外,渲染器隐藏了使用的底层系统(可能是 D3D、OpenGL 或其他)。

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

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

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

    【讨论】:

    • 内容丰富!我同意你的观点,看到你的描述,听起来并没有那么慢。我可能只是不习惯新的方式,有点生气。再次,非常感谢。
    • @Diaz 很高兴为您提供帮助。如果您想快速了解 SDL2,我真的可以推荐 SDL2 tutorials by Lazy Foo
    猜你喜欢
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 2014-01-14
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多