【问题标题】:How to render opengl 3.3 into an SDL2 Texture?如何将 opengl 3.3 渲染成 SDL2 纹理?
【发布时间】:2015-03-25 08:57:17
【问题描述】:

我用 SDL2 制作 2D 游戏已经有一段时间了,最​​近我决定使用 opengl 3.3 制作 3D 游戏。

由于我有很多用纯 SDL2 编写的 c++ 代码,可以在该引擎中重用,我想知道,我怎么能设法让 opengl 渲染到 SDL_Texture

这个想法是用 opengl 做 3D 的东西,把它放到 SDL_Texture,然后用 SDL2 做 2D 的东西。

【问题讨论】:

    标签: c++ opengl 3d sdl-2 opengl-3


    【解决方案1】:

    您必须小心,因为 SDL 2 还没有明确支持这一点。您可以轻松地破坏 SDL 已设置并依赖于正确渲染的 GL 状态。

    但是,SDL_gpu(完全公开:我是作者)确实支持混合 2D 和 3D,但您必须移植 SDL_Renderer 代码的其余部分。

    【讨论】:

    • 正如你所提到的,SDL2 并不意味着混合 2D 和 3D,因此作为结论,最干净的选项似乎,如前所述:使用 opengl 或 SDL_gpu 进行所有渲染(ps1:我会验证 genpfault 答案,作为 FBO/PBO 选项,即使速度很慢,也无需重写代码即可解决问题)(ps2:SDL_gpu 是令人印象深刻的渲染替代方案,非常感谢分享!)
    【解决方案2】:

    渲染到 FBO,使用 PBO 将像素拉回主内存,然后将像素上传到 SDL_Texture

    不过,这并不完全是一条“快速路径”,您最好使用 OpenGL 来做所有事情。

    【讨论】:

      猜你喜欢
      • 2014-01-14
      • 2013-12-27
      • 1970-01-01
      • 1970-01-01
      • 2014-08-09
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多