level 6
1098122556
楼主
我想用SDL2写五子棋界面。载入背景图片后以触屏事件贴上棋子图,调用SDL_RenderPresent(renderer),感觉这个函数很诡异,反复调用反而会使图像消失,让背景闪烁,落子分为几层,另外renderclear()怎么调也解决不了,感觉这个函数也怪怪的。请问吧中大神怎么解决?
void gobang::gettouch() {
while (SDL_PollEvent(&event)!=0) {
TouchX = event.tfinger.x * W;
TouchY = event.tfinger.y * H;
switch (event.type) {
case SDL_FINGERDOWN:
// display(true, TouchX, TouchY);
break;
case SDL_FINGERUP:
display(side, TouchX, TouchY);
side = !side;
break;
}
}
}
void gobang::display(){
SDL_RenderClear;
SDL_QueryTexture(Map,NULL, NULL, &R1.w, &R1.h);
R2.w = R1.w * 1.1;
R2.h = R1.h * 1.1;
R2.x = R1.x = 10;
R2.y = R1.y = 10;
SDL_RenderCopy(Renderer, Map, NULL, &R2);
SDL_RenderPresent(Renderer);
// SDL_RenderClear(Renderer);
SDL_Delay(10000);
}
void gobang::display(bool s,int x ,int y) {
if (s== true ){
Qi.x=x;
Qi.y=y;
SDL_RenderCopy(Renderer, BlackTex,NULL, &Qi);
}
else if (s== false ){
Qi.x=x;
Qi.y=y;
SDL_RenderCopy(Renderer, WhiteTex,NULL, &Qi);
}
SDL_RenderPresent(Renderer);
//SDL_Delay(100);
}



2017年02月03日 17点02分
1
void gobang::gettouch() {
while (SDL_PollEvent(&event)!=0) {
TouchX = event.tfinger.x * W;
TouchY = event.tfinger.y * H;
switch (event.type) {
case SDL_FINGERDOWN:
// display(true, TouchX, TouchY);
break;
case SDL_FINGERUP:
display(side, TouchX, TouchY);
side = !side;
break;
}
}
}
void gobang::display(){
SDL_RenderClear;
SDL_QueryTexture(Map,NULL, NULL, &R1.w, &R1.h);
R2.w = R1.w * 1.1;
R2.h = R1.h * 1.1;
R2.x = R1.x = 10;
R2.y = R1.y = 10;
SDL_RenderCopy(Renderer, Map, NULL, &R2);
SDL_RenderPresent(Renderer);
// SDL_RenderClear(Renderer);
SDL_Delay(10000);
}
void gobang::display(bool s,int x ,int y) {
if (s== true ){
Qi.x=x;
Qi.y=y;
SDL_RenderCopy(Renderer, BlackTex,NULL, &Qi);
}
else if (s== false ){
Qi.x=x;
Qi.y=y;
SDL_RenderCopy(Renderer, WhiteTex,NULL, &Qi);
}
SDL_RenderPresent(Renderer);
//SDL_Delay(100);
}


