我正在使用SDL2中的自上而下的RPG游戏。我已经到了可以移动角色的地步,使用精灵表和所有爵士乐。我使用SDL_RenderSetViewport
开始使用相机。但是,我遇到了一些我不想解决的问题。因此,当我移动播放器时,我没有移动视口,而是移动了其他所有内容。我有一个移动所有精灵(不包括玩家)的函数,它存储在vector
中。
我知道这导致了大量的数学计算,但从渲染的角度来看效率是否低?我的逻辑是,因为每次刷新时都会将对象复制到SDL_Renderer
。由于它们正在被重新复制,无论变化如何,每次都不会进行相同的处理量吗?
答案 0 :(得分:1)
是的,这完全没问题。
无论如何, SDL_RendererSetViewport
与此问题无关。此函数影响最终帧相对于窗口的边界。因此,您实际上没有任何其他选择。
由于它们正在被重新复制,无论变化如何,每次处理的数量都不一样吗?
你是对的,这没关系。更不用说,你(我假设)在帧的开头清除屏幕。
如果你喜欢冒险,你可能想看看使用glTranslatef
,虽然我不推荐它,因为SDL在Windows上使用Direct3D,这意味着你必须以某种方式强制使用OpenGL。
我说你现在的方法很安全;从浏览互联网看,这似乎是一种常见的方式。
我有一个移动存储在矢量中的所有精灵(不包括玩家)的函数。
你过分思考这一点。你可以在渲染时改变每个精灵的位置,这比处理整个矢量要高效得多。