SDL2:在多个窗口之间共享渲染器

时间:2014-10-30 09:35:07

标签: rendering sdl-2 multiple-monitors

我有一组图像,我需要在不同的显示器上显示它。所以我创建了两个窗口和两个渲染器。但是有些图像可能会在几个显示器上显示。如果纹理是使用rendererOne创建的,并且使用rendererTwo显示,则会导致程序崩溃。 如果我每次都在运行时创建纹理,当我需要显示时 - 我已经掉了FPS。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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