【发布时间】:2018-07-20 13:17:09
【问题描述】:
我正在尝试在两个单独的 SDL_Renderer* 上使用相同的 SDL_Texture*,但显然 SDL_Texture 似乎与 SDL_Renderer*“绑定”。
有没有办法让第二个渲染器能够使用第一个渲染器通过 SDL_CreateTextureFromSurface 创建的纹理?如果我尝试通过仅复制 SDL_Texture* 指针并将 SDL_RenderCopy 与第二个渲染器一起使用来执行此操作,则屏幕将保持黑色。
如果需要更多详细信息:
我在 Virtual Studio 中使用 SDL2 库。我有两个独立的 SDL_Window,每个都有一个 SDL_Renderer。包含第一个渲染器的窗口在整个程序中永久存在,而第二个窗口仅在需要时创建并在不久后销毁。
【问题讨论】:
-
为什么不使用两个
SDL_Textures? -
我尽量保持低冗余,因为随着程序的增长,使用 2 个 SDL_Texture 会占用大量空间。
-
您说第二个窗口在创建后不久就被销毁了。为与该窗口关联的渲染器创建纹理并用窗口销毁它不会损害您的内存使用。它确实会影响性能,因为您需要再次复制源表面,但与创建窗口相比,它不会花费太多。
-
这是真的,但是当我创建第二个窗口时,我使用一个长时间释放的单一表面创建所有纹理。我可以编写一个解决方法以再次加载到表面,但是当我的程序运行时更改源失败时,编写起来会相当不愉快并且可能导致一些奇怪的错误。这就是为什么我问是否有一个简单的方法。
-
我是否理解在 SDL 2 中的多个窗口中使用位图字体纹理的正确方法是为将使用位图字体纹理的每个窗口创建一组单独的纹理?跨度>