Я новичок в C++ и DirectX, я родом из XNA. Я разработал игру вроде Fly The Copter. То, что я сделал, создано классом Wall. Пока игра бежит, я рисую все стены. В XNA я сохранил стены в ArrayList, а на C++ я использовал вектор. В XNA игра проходит быстро и на C++ очень медленная. Вот C++ код:Slow C++ DirectX 2D Game
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). Это единственные коды, которые запускаются в игровом цикле. Я знаю, что это плохой код, если у вас есть идея его улучшить, пожалуйста, помогите. Спасибо и извините за мой английский.
Код здесь выглядит разумно умным. Проблема, скорее всего, заключается в фреймах конвейера рендеринга и оптимизации. – aramadia
Я бы сказал, что вы не включили флаги оптимизации. – AraK
может быть полезно знать, насколько медленнее. мы говорим о половинной скорости или порядках? –