c++ - 2D 图形性能提升

标签 c++ winapi

我知道我的标题有点空洞。我的问题是,我正在尝试用 C++ 编写一个带有 Win32 图形的小游戏,我希望我的所有作品都从上到下绘制,以便它们正确地排在彼此的前面。 (例如,如果我站在一棵树前面,它会先画树,然后画玩家,所以我在前面)

我的第一个想法是,使用 vector ,因为我需要一个动态数组类型的东西,像这样在 for 循环中循环

for(y = 0; y < playerYValue; y++){
    //Check every enemy/object to see if its yValue matches the looping y
    object.drawImage();
}

在玩家面前也是如此。然而,在运行一些测试之后,这是非常低效的循环,它需要 34 毫秒,而没有它需要 2 :/

我正在寻找一种方法来按顺序绘制我的所有对象,并希望得到任何帮助,一切都值得一试。这是一个我想不出解决问题的创造性方法的领域。

请询问您是否需要我提供更多详细信息:)

编辑:代码中的注释是 vector 迭代的占位符,每次检查对象的 yValue 是否等于 y :) 我想我会清楚一点 :)

最佳答案

也许您应该按 y 值对对象进行排序,然后渲染它们,如果您当前在每次绘制对象时都对每个对象进行搜索,这应该会更快。

并且尽量不要让播放器变得特别。 Player 也应该是一个“对象”,然后你会从后到前排序一次,然后再从后到前。

关于c++ - 2D 图形性能提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18124318/

相关文章:

c++ - 从不同的 dll 继承时信号未正确导出

c++ - Qt 创造者。从文件中读取并在 beaggleboard 上打印出来

c++ - 从 Windows 开始菜单快速启动中删除 exe

c - iowin32.h 中的 OF 宏

c++ - Win32 键盘加速器不工作 C++

c++ - WCHAR 到 LPCWSTR

C++ ld 返回 1 退出状态

c++ - 为什么不调用移动构造函数?

c - 我的dll注入(inject)。编译为 32 位时成功,但编译为 64 位时失败

c++ - 为什么 std::list 想不带参数调用我的分配器?