C 如何避免sdl2中的可见刷新

C 如何避免sdl2中的可见刷新,c,sdl-2,C,Sdl 2,在这种情况下: void Game\u运行(结构游戏*Game) { //先前的渲染将被清除。 SDL_渲染器(游戏->渲染器); //我们正在付钱 游戏->状态=游戏; SDL_事件; SDL_bool GameRunning=SDL_TRUE; 渲染基本元素(游戏); while(GameRunning)//当玩家没有松开时,游戏正在运行 { while(SDL_事件和事件)) { 开关(事件类型) { //按键时 案例SDL_按键关闭: //检测按下的键 开关(event.key.keys

在这种情况下:

void Game\u运行(结构游戏*Game)
{
//先前的渲染将被清除。
SDL_渲染器(游戏->渲染器);
//我们正在付钱
游戏->状态=游戏;
SDL_事件;
SDL_bool GameRunning=SDL_TRUE;
渲染基本元素(游戏);
while(GameRunning)//当玩家没有松开时,游戏正在运行
{
while(SDL_事件和事件))
{
开关(事件类型)
{
//按键时
案例SDL_按键关闭:
//检测按下的键
开关(event.key.keysym.sym)
{
案例SDLK_左:
printf(“按下左键\n”);
向左移动光标(游戏);
打破
案例SDLK_右:
printf(“按下右键”);
向右移动光标(游戏);
打破
违约:
打破
}
打破
//当钥匙未按下时
案例SDL_密钥更新:
开关(event.key.keysym.sym)
{
案例SDLK_左:
printf(“左键向上”);
打破
案例SDLK_右:
printf(“右键向上”);
打破
违约:
打破
}
打破
//如果用户退出游戏
案例SDL_退出:
//比赛结束了
GameRunning=SDL_FALSE;
游戏->状态=游戏结束;
打破
违约:
打破
}
}
}
}
无效渲染弧(结构游戏*游戏){
//刷新
SDL_渲染器(游戏->渲染器);
//我再次渲染背景
精灵表渲染(游戏->背景,背景X,背景Y,255,0);
//我正在画一条弧线
arcRGBA(游戏->渲染器,屏幕宽度/2,屏幕高度/2100,0,80,255,255,255,255);
//我渲染我的东西
SDL_渲染器呈现(游戏->渲染器);
};
如何渲染内容(使用新元素刷新屏幕或使用sdl_gfx仅刷新静态元素),而不看到它快速出现和消失

我通常使用

SDL_渲染器(游戏->渲染器)

画我的东西然后

SDL\u渲染器呈现(游戏->渲染器)

但是我不喜欢提神的效果。 我是做错了什么,还是这很正常

更新
我应该把
render_弧放在哪里(结构游戏*Game)
在发生事件时,总是在看不到它快速移动的情况下进行渲染,例如?

渲染到屏幕外缓冲区,只绘制不同的内容。我对这种编程非常陌生,我不确定什么是屏幕外缓冲区。@Hazel通常你不应该看到你所说的效果。你能做一个演示吗?@HolyBlackCat我添加了更多的上下文和一个特定的问题。“我应该把render_Arc(struct Game*Game)”放在事件循环之外的主循环(
while(GameRunning)
)中的什么位置。