【发布时间】:2012-01-01 16:55:47
【问题描述】:
编辑:更改标题以更好地反映当前问题。
我现在知道问题的根源在于功能的文本拆分部分。我现在记得我做了什么,我更改了拆分文本,因为我的教程返回了一个错误。
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;
}
但如果我错了,我还是很高兴知道。 *注意:上面的代码现在可以正常工作了,没有问题,而且效果加倍。所以我确定这是我的文本拆分代码。
【问题讨论】:
-
图像很小 - 老实说,我看不到问题:/ 只是一个评论:你确定你不使用深度缓冲区吗?
-
@cli_hlt 您可以通过右键单击以全分辨率查看图像 -> 查看图像(或复制图像位置并将 URL 粘贴到您选择的窗口或选项卡中)。
-
@01d55 哦,多亏了你 - 我傻了。因此,我同意您的回答-似乎是对我们所拥有信息的最佳猜测。 +1
-
到目前为止,我已经尝试过清除深度缓冲区,广告禁用 depthMask。但是我没有在我的代码中使用与任何深度函数相关的任何东西,事实上,它唯一一次使用的是字体渲染,它禁用了深度测试。并且删除它对结果没有影响:/也没有禁用深度蒙版或清除深度缓冲区。这是一个相当奇怪的问题......
标签: c++ text-rendering