2011-05-04 57 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