修改:更改标题以更好地反映当前问题。
我知道现在是问题的根源所在,它与文本分割部分功能有关。我现在记得我做了什么,我改变了分裂文本,因为我的教程返回了一个错误。
for(const char *c=text;*c;c++)
{
if(*c=='\n') {
string line;
for(const char *n=start_line;n<c;n++) line.append(1,*n);
lines.push_back(line);
start_line=c+1;
}
}
if(start_line)
{
string line;
for(const char *n=start_line; n < c;n++) line.append(1,*n);
lines.push_back(line);
}
'c'返回未声明,并且没有提及任何其他c,所以我猜它指的是上面for循环中的指针。虽然将“if(start_line)”带入第一个代码块,但仍然将文本中的每个字符返回给我,而不仅仅是整个代码。
所以我将代码更改为以下内容:
for(const char *c=text;*c;c++)
{
if(*c=='\n')
{
string line;
for(const char *n=start_line;n<c;n++) line.append(1,*n);
lines.push_back(line);
start_line=c+1;
if(start_line)
{
string line;
for(const char *n=start_line;n<c;n++) line.append(1,*n);
lines.push_back(line);
}
}
else if (*c == *start_line)
{
lines.push_back(text);
}
}
我很确定“else if(* c == * start_line)”比较是导致我这个问题的原因。不确定但要用什么来代替它。我想虽然因为我没有使用任何换行或者不打算我可以选择:
for(const char *c=text;*c;c++)
{
lines.push_back(text);
break;
}
但是,如果我出错了,仍然会很高兴。 *注意:上面的代码现在工作正常,没有问题和倍增效果。所以我确定这是我的文本分割代码。
答案 0 :(得分:1)
看起来该捕获中错误绘制的文本是“50b”,我怀疑这是一个通常出现在游戏中的字符串。看起来你正在绘制一些通常是空字符串的东西,但有时会拾取垃圾值 - 换句话说,是未定义的行为。
我当然不能确定,因为我根本没有足够的信息来找到你的问题。你的glClear看起来很好,所以你可以放心,额外的文字被绘制在与预期文本相同的框架中。
答案 1 :(得分:1)