如何将 opengl 3.3 渲染成 SDL2 纹理?

How to render opengl 3.3 into an SDL2 Texture?

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

因为我有很多用纯 SDL2 编写的 c++ 代码,我可以在那个引擎中重用,我想知道,我怎么能设法使 opengl 渲染到 SDL_Texture

我的想法是用 opengl 在 3D 中做一些事情,把它放到一个 SDL_Texture 中,然后在 2D 中做一些事情并用 SDL2 渲染它。

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

虽然这不完全是 "fast path",但您最好还是使用 OpenGL 来做所有事情。

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

然而,SDL_gpu(完全披露:我是作者)确实支持混合 2D 和 3D,尽管您必须移植其余的 SDL_Renderer 代码。