如何在SDL_Renderer中移动单个元素?

时间:2018-12-23 16:33:11

标签: c sdl-2

我想用SDL2和C编写游戏。

但是当他移动时,我不知道如何更新角色。

我尝试使用下面的代码对其进行更新。

但是问题在于它会删除渲染器的所有内容,字符以及所有内容。

而且,如果我不添加SDL_RenderClear(renderer1),则每次移动该字符时,该字符将再显示一次,因为尚未清除其最后位置。

//Before, there is an event checking loop
if(keyPressed == SDLK_RIGHT){
  rectMegaman.x += 20;
  SDL_RenderClear(renderer1);
  SDL_RenderCopy(renderer1, megaman, NULL, &rectMegaman);
  SDL_RenderPresent(renderer1);
}

那么,如何在不删除所有渲染器内容的情况下更新角色?

1 个答案:

答案 0 :(得分:0)

到目前为止,使用SDL或任何其他图形库呈现几乎所有内容的最常见方法是清除并重新绘制整个屏幕。每个游戏(据我所知)每秒至少执行30次,并且运行正常。这意味着您对SDL_RenderClearSDL_RenderPresent的调用应该在任何有条件的图形之外(通常每个对象只有一个调用)。通常的想法是先调用SDL_RenderClear,然后为需要绘制的所有内容调用SDL_RenderCopy,最后再调用SDL_RenderPresent,然后重新开始。