C++ 2D图形性能提升

C++ 2D图形性能提升,c++,winapi,C++,Winapi,我知道我的头衔有点含糊不清。我的问题是,我试图用Win32图形编码C++中的一个小游戏,我希望所有的作品都能从上到下,这样他们就可以正确地在前面。(例如,如果我站在一棵树前,它会先画这棵树,然后再画玩家,所以我在前面) 我的第一个想法是,使用向量,因为我需要一个动态数组类型的东西,在这样的for循环中循环 for(y = 0; y < playerYValue; y++){ //Check every enemy/object to see if its yValue matche

我知道我的头衔有点含糊不清。我的问题是,我试图用Win32图形编码C++中的一个小游戏,我希望所有的作品都能从上到下,这样他们就可以正确地在前面。(例如,如果我站在一棵树前,它会先画这棵树,然后再画玩家,所以我在前面)

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

for(y = 0; y < playerYValue; y++){
    //Check every enemy/object to see if its yValue matches the looping y
    object.drawImage();
}
(y=0;y{ //检查每个敌人/对象,查看其y值是否与循环y匹配 object.drawImage(); } 在球员面前也是一样。然而,在运行一些测试之后,这是非常低效的,因为循环需要34毫秒,没有循环需要2:/

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

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


编辑:代码中的注释是每次向量迭代的占位符,用于检查对象的y值是否等于y:)我想我应该澄清一下:)

也许你应该按y值对对象排序,然后渲染它们,如果当前每次绘制对象时都在每个对象上执行搜索,则此速度应该更快


尽量不要让球员变得特别。播放器也应该是一个“对象”,然后您可以从前到后排序一次,然后从前到后绘制。

object.drawimage()的内容是什么?在这种情况下,drawimage()只是图像绘制函数的占位符。这只是一个基本的Win32绘图,没什么特别的。好吧,我所有的“对象”都是实体的成员,因为这样的原因,所以我可以创建一个包含所有内容的向量。如何按变量对所有实体进行排序?:)我知道sort()算法,但我认为这只能按名称排序?(谢谢你的帮助,这当然是值得思考的!)此外,如果玩家包括在这个变化的向量中,我将如何对它做所有具体的事情?或者我应该尝试确保在类中处理所有指定:)@BradleyHodgkins您的后一个建议是理想情况,如果需要,您可以在将其添加到
实体
列表之前,将
Player*myPlayer
保留到Player对象中。然后用那个指针来操作它的细节,比如玩家输入等。你应该尝试使用重载/继承来尽可能减少对外部控制的需要,虽然好的,谢谢:)我稍后会试试:)我会给你答案,因为这听起来是个好主意:)嘿,对不起打扰你,这似乎已经奏效了,但是指针的想法是行不通的,除非你想把指针添加到向量中。我现在的问题是有些东西正在更新,但它不是向量中的那个!我会用谷歌搜索这个问题,但如果你能解释一下你的意思,我会非常感激:)