2011-05-04 27 views
0

我有一个SDL渲染文本显示不出来,除非其他表面清除

timer = TTF_RenderText_Solid(tfont, timeStr.str().c_str(), txtColor); 
applySurface(500, 30, timer, screen); 

和“屏幕”面我也申请我的性格,我的墙壁上。但由于某种原因,我似乎无法看到定时器,除非我已经将'floorsurface'和'charsurface'设为NULL。难道我做错了什么?

+0

我忘了说,从while循环(不是轮询循环)函数调用代码的定时器是否是正确的地方?我不能上传整个事情,我有大约300行:S – eddy 2011-05-04 10:45:30

+0

你能够显示你的applySurface函数代码吗?你能澄清一下地面和表面是什么吗?谢谢 – SuperMaximo93 2011-05-04 13:41:26

+0

我的applySurface将是 void applySurface(int x,int y,SDL_Surface * source,SDL_Surface * destination,SDL_Rect * clip = NULL) { SDL_Rect offset; offset.x = x; offset.y = y; SDL_BlitSurface(source,clip,destination,&offset); } – eddy 2011-05-04 14:05:19

回答

1

尝试在SDL_Flip(屏幕)之前放置timerUpdate()。您正在调用SDL_Flip,然后调用timerUpdate()。所以你认为,没关系,下次屏幕翻转时,我会看到文字。但是现在发生的情况是,在屏幕再次翻转之前,您正在将更多表面涂抹在顶部,然后您无法看到文字,因为您在其上抹去了表面。所有你需要做的就是改变订单,所以

timerUpdate(); 
if (SDL_Flip(screen) == -1) return 1; //Instead of the other way round 

应该工作。

+0

我已经试过了,其中包括一个通过将地面和播放器设置为NULL来清除所有东西的功能,使屏幕变黑。如果我做到了,我可以看到文字,但是,当地板是可见的,它不能被看到:(我确定我做错了什么,但我只是不知道什么。上面提出的翻转你也没有做任何事情:( – eddy 2011-05-04 14:41:44

+0

ohmahgod!它现在可见了!我做的是另一个循环,它显示了地牢地图的地板,所以timerUpdate()在循环之后被移动!它现在可以工作了!thanx很多! – eddy 2011-05-04 14:46:15

+0

太棒了!很高兴你能够正常工作:) – SuperMaximo93 2011-05-04 14:47:47