我是C++和DirectX的新手,我来自XNA。 我开发了一款类似Fly The Copter的游戏。 我所做的是创建了一个名为Wall的类。 游戏运行时,我画了所有的墙。 在XNA中,我将墙存储在一个ArrayList中,并在C++中使用了vector。 在XNA中,游戏运行速度很快,在C++中速度非常慢。 这里的C++代码:缓慢的C++ DirectX 2D游戏
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;
}
}
在更新方法我通过4. 减少的X值在Draw方法我打电话sprite->绘制(Direct3DXSprite)。 这是在游戏循环中运行的唯一代码。 我知道这是一个不好的代码,如果你有一个想法来改进它,请帮助。 感谢和抱歉我的英语。
这里的代码看起来相当聪明。问题很可能在于渲染管线和优化标志。 – aramadia 2010-01-28 21:44:14
我会说你没有打开优化标志。 – AraK 2010-01-28 21:53:05
知道慢多少可能会有用。我们说半速还是数量级? – 2010-01-29 10:16:11