如何在SDL屏幕上显示blit?

时间:2014-01-22 12:06:57

标签: c++ sdl

我一直在制作Pong克隆游戏。它几乎完成了,就在我认为一切都很完美的时候。 SDL_ttf.h库似乎很痛苦。

我将提供一般概述而不是整个代码只是为了简单起见。 我用过 -

int PlayerScore=0;
int AIScore=0;

以下是在SDL中呈现文本的语法。

SDL_Surface *TTF_RenderText_Solid(TTF_Font *font, const char *text, SDL_Color fg);

现在,看看 const char * text ?这就是我需要在那里给我的PlayerScore / AIScore。 PlayerScore / AIScore是整数类型,但它们应该是const char *类型。因此,经过数小时的浏览和研究后,我发现有一个 sstream 库可用于将整数转换为 const char *

我将表面声明为imgTxt;

SDL_Surface* imgTxt;
std::stringstream strm;
strm << PlayerScore;

...

imgTxt = TTF_RenderText_Solid( font, strm.str().c_str(), fColor );
SDL_BlitSurface(imgTxt,NULL,screen,null);
猜猜是什么?转换成功。但是我遇到了一个不同的问题,就在我表面的时候。它将分数显示为 0000000000000000000000000000 并继续运行,一段时间后字体消失且没有任何反应。 我不知道为什么会发生这种情况,也许字符串会在每个循环中附加得分?这是截图。 enter image description here

有没有解决这个问题的原因?任何帮助将深表感谢。提前谢谢。

1 个答案:

答案 0 :(得分:1)

没有看到整个代码,我不能说。它看起来确实如此。

你是在每个循环中创建sstream吗?

另一种方法是使用sprintf。

char buffer [50];
sprintf (buffer, "%d", PlayerScore);

以后

imgTxt = TTF_RenderText_Solid( font, buffer, fColor );
SDL_BlitSurface(imgTxt,NULL,screen,null);