2014-10-30 32 views
0

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

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

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

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

+0

没有理由不使用单个纹理。在不知道使用环境的情况下,很难肯定地说,但从理论上讲,每次使用时都不应该重新创建纹理。加载一次并在需要时绘制它。 – Zammalad 2014-10-30 11:30:48

回答

0

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

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