gpt4 book ai didi

c++ - SDL2 : Is it bad to move everything instead of using the view-port?

转载 作者:行者123 更新时间:2023-11-30 05:18:07 24 4
gpt4 key购买 nike

我正在开发 SDL2 中的俯视角色扮演游戏。我已经到了可以移动角色、使用 sprite-sheets 和所有爵士乐的地步。我开始使用 SDL_RenderSetViewport 在相机上工作。然而,我遇到了一堆我不想处理的问题。因此,我没有在移动播放器时移动视口(viewport),而是移动了其他所有内容。我有一个函数可以移动存储在 vector 中的所有 Sprite (不包括玩家)。

我知道这会导致大量的数学计算,但从渲染的角度来看会不会效率低下?我的逻辑是,因为每次刷新时对象都会被复制到 SDL_Renderer。既然是被复制,不管有什么变化,每次的处理量不都是一样的吗?

最佳答案

是的,这完全没问题。

SDL_RendererSetViewport 无论如何都与此问题无关。此函数影响最终框架相对于窗口的边界。因此,您实际上别无选择。

Since they are being recopied, regardless of changes, wouldn't it be the same amount of processing every time?

你是对的,这并不重要。更不用说,您(我假设)在帧的开头清除屏幕。

如果您喜欢冒险,您可能想看看使用 glTranslatef,但我不推荐它,因为 SDL 在 Windows 上使用 Direct3D,这意味着您必须以某种方式强制使用 OpenGL .

我会说您目前的方法是安全的;环顾互联网,这似乎是一种常见的做法。

I have a function that moves all the sprites (excluding the player), which are stored in a vector.

你有点想多了。您可以在渲染时只变换每个 Sprite 的位置,这比处理整个 vector 要高效得多。

关于c++ - SDL2 : Is it bad to move everything instead of using the view-port?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41885733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com