在前景中渲染文本
Render text in foreground
本文关键字:文本 更新时间:2023-10-16
我正在MacOSX 10.7.2下的OpenGL/GLUT应用程序中尝试在前台渲染一些字符串。
目前我正在使用这段代码在前景中画几行,效果很好。
void drawForeground() {
int width = 10;
int height = 10;
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(-1, width, -1, height, -1, 1);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glDepthMask(GL_FALSE);
glBegin(GL_LINES);
//Draw the lines
glEnd();
/*********************/
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glDepthMask(GL_TRUE);
}
现在我也想画一些文字。在上一个函数中,我在放置星号的行中添加了这段代码:
glRasterPos2d(2,2);
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_10, 'c');
但没有奏效。如果在drawForeground
方法之外使用相同的两行,则会出现"c"
我已经打电话给glDisable(GL_TEXTURE_2D)
了,没有任何变化。
有人能帮我理解我的错误吗?
解决方案:
解决方案是使用glDisable(GL_LIGHTING)
禁用照明,并在渲染文本后重新启用。
我想强调的是,文本始终以相同的维度呈现,与glOrtho
调用的参数无关。
没有什么确定的,但如果你还没有尝试过的话,可以尝试几件事:
在调用glutBitmapCharacter()之前,颜色设置为什么?如果绘图颜色设置为不显示在背景中的颜色,则可能看起来什么都没有绘制。
除了glDisable(GL_TEXTURE_2D)之外,您是否尝试过调用glDisable?
有没有其他东西,比如你在代码中的其他地方启用照明,然后在呈现可能影响事情的文本之前不禁用?当我过去遇到这样的错误时,它们似乎经常与OpenGL状态中的某个东西处于我意想不到的状态有关,通常是因为我在其他地方对状态进行了一些更改,却忘记了撤消它。我建议你尝试系统地注释代码中的各种OpenGL调用,即使它们看起来没有直接关联,看看这些角色是否会出现。如果他们这样做了,那么你就会知道你需要进行/撤消哪个状态的更改。
相关文章:
- 文本文件中的单词链表
- 从命令行c++发送文本文件名
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何将内容数组写入文本文件?
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- C++将文本文件中的数据读取到结构数组中
- 在指针的帮助下,文本文件中单词的频率
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将值从二维数组输出到文本文件
- 如何在c++中从文本文件中逐行读取整数
- 如何创建一个QTableWidgetItem,用长文本右对齐,左边有省略号
- 从文本文件中读取时钟时间和事件时间并进行处理
- 如何从文本文件中读取值和数组
- 如何在C++中确定文本文件中的元素是字符还是数字
- 如何根据单词在文本中出现的概率输出单词
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- C++试图读取一个文件并输出到另一个文本文件
- 如何通过套接字将文本文件的内容从服务器发送到客户端