【问题标题】:SDL2 Draw scene to texture. SDL2 RenderTexture like SFMLSDL2 将场景绘制到纹理。 SDL2 RenderTexture 类似 SFML
【发布时间】:2018-02-19 15:51:24
【问题描述】:

我一直在使用 SFML + ImGui 开发 2D 引擎。

编辑器是使用 ImGui 渲染的,场景窗口是 sf::RenderTexture,我在其中绘制游戏对象,然后转换为 ImGui::Image 以在编辑器中渲染它。

现在我需要在今年的学士学位期间创建一个 3D 引擎,但使用 SDL2 + ImGui,我想重新创建我使用 2D 引擎所做的事情。

我已经设法像在 2D 引擎中那样使用 ImGui 附带的 Example 渲染编辑器。

但我不知道如何在 SDL2 中创建与 sf::RenderTexture 等效的内容,因此我可以在那里绘制 3D 场景并将其转换为 ImGui::Image 以在编辑器中显示。

如果能提供代码就更好了。如果您希望我提供任何具体代码,请告诉我。

谢谢!

【问题讨论】:

    标签: c++ opengl sfml sdl-2 render-to-texture


    【解决方案1】:

    认为您正在寻找这样的东西:

    // Create a render texture
    SDL_Texture *target = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, width, height);
    
    // Activate the render texture
    SDL_SetRenderTarget(renderer, target);
    
    // (Do your rendering here)
    
    // Disable the render texture
    SDL_SetRenderTarget(renderer, NULL);
    
    // (Use the render texture)
    

    【讨论】:

    • 我需要为这个纹理创建一个渲染器吗?因为我在创建窗口时没有渲染器。我认为 SDL_GL_CreateContext 正在这样做。如果我创建一个渲染器,我需要使用我在 SDL_GL_CreateContext 中使用的同一个窗口?
    • @TinoTano 你需要一个渲染上下文,是的。 SFML 也是如此——只是被隐藏和抽象掉了。纹理还必须知道目标,例如OpenGL 或 DirectX。
    • 我看到一些类似 link 的帖子说不能将 SDL_Renderer 与 OpenGL 混合
    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多