我知道我的标题有点空洞。我的问题是,我正在尝试用 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/