我是C++和DirectX的新手,来自XNA。 我开发了一个类似于飞行直升机的游戏。 我创建了一个名为Wall的类,在游戏运行时绘制所有的墙壁。 在XNA中,我将墙壁存储在ArrayList中,在C++中我使用了vector。 在XNA中,游戏运行非常快,在C++中运行非常慢。 以下是C++代码:
void GameScreen::Update()
{
//Update Walls
int len = walls.size();
for(int i = wallsPassed; i < len; i++)
{
walls.at(i).Update();
if (walls.at(i).pos.x <= -40)
wallsPassed += 2;
}
}
void GameScreen::Draw()
{
//Draw Walls
int len = walls.size();
for(int i = wallsPassed; i < len; i++)
{
if (walls.at(i).pos.x < 1280)
walls.at(i).Draw();
else
break;
}
}
在Update方法中,我将X值减少4。 在Draw方法中,我调用sprite->Draw(Direct3DXSprite)。 这是游戏循环中唯一运行的代码。 我知道这是一个糟糕的代码,如果你有改进的想法,请帮忙。 谢谢,对我的英语表示抱歉。