【问题标题】:SDL2: Share renderer between multiple windowsSDL2:在多个窗口之间共享渲染器
【发布时间】:2014-10-30 09:35:06
【问题描述】:

我有一组图像,我需要在不同的显示器上显示它。所以我创建了两个窗口和两个渲染器。但是某些图像可能会在多个显示器上显示。如果纹理是使用 rendererOne 创建的,并使用 rendererTwo 显示,我们就会出现程序崩溃。 如果我每次都在运行时创建纹理,当我需要显示时 - 我的 FPS 下降了。

如何更好地解决这个问题?我可以在窗口之间共享渲染器(在不同的显示器上)吗?或者我可以在不同的渲染器之间共享纹理吗?

附言我可以将图像的名称标记为“Image1.one.two.png”或“Image2.one.png”等,并创建 Image1 的两个副本和 Image2 的一个副本,但这非常困难,并且需要很多 RAM。

p.p.s.我不直接使用OpenGL。

【问题讨论】:

  • 没有理由不只使用单个纹理。在不知道您使用它的上下文的情况下,很难确定,但从理论上讲,您不应该在每次希望使用它时都重新创建纹理。加载一次并在需要时绘制它。

标签: rendering sdl-2 multiple-monitors


【解决方案1】:

我已经通过使用纹理的延迟初始化解决了这个问题。我存储 SDL_Surface,当我需要显示一些纹理时,我会检查它:

if (m_texture == nullptr || !m_texture->CompatibleWithRenderer(renderer))
{
    m_texture = new Texture(renderer, m_surface);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多