读书人

OpenGL中的英文字符显示有关问题

发布时间: 2012-03-09 16:54:57 作者: rapoo

OpenGL中的英文字符显示问题
在编一个飞机仿真飞行的软件,想在屏幕上实时显示飞机的飞行状态信息:位置,速度等。不知道调用什么函数使数据在屏幕坐标系下显示。望各位大侠指点,我是刚接触OpenGL,有好多不懂的。
以下是数据显示的源代码:

#define MAX_CHAR 128
void drawString(const char* str)
{
static int isFirstCall = 1;
static GLuint lists;
if( isFirstCall )
{ // 如果是第一次调用,执行初始化
// 为每一个ASCII字符产生一个显示列表
isFirstCall = 0;
// 申请MAX_CHAR个连续的显示列表编号
lists = glGenLists(MAX_CHAR);
// 把每个字符的绘制命令都装到对应的显示列表中
wglUseFontBitmaps(wglGetCurrentDC(),0,MAX_CHAR,lists);
}
// 调用每个字符对应的显示列表,绘制每个字符
for(; *str!='\0'; ++str)
glCallList(lists + *str);
}
glColor3f(1.0f, 0.0f, 0.0f);
glRasterPos3f(X+1.0,Y+1.0, Z+1.0); //字符显示位置,(X,Y,Z)为飞机的位置坐标,这个函数可以显示数据,但是数据是绑定在飞机上的,飞机飞到哪儿,数据显示到哪儿。当飞机飞得很远时,数据就变得很小,并且都挤到了一块儿。我刚开始用这个函数glRasterPos3f(1.0,1.0,1.0),不过数据就停留在这个位置,当飞机飞远时,数据就看不到了。我想把数据显示在屏幕的一个固定区域内,不知道该调用什么函数,望各位多多指点,小弟在这儿多谢了!
drawString("position: ");//显示字符 position:

[解决办法]

C/C++ code
glPushMatrix();    glLoadIdentity();    glMatrixMode(GL_PROJECTION);    glPushMatrix();    glLoadIdentity();    glOrtho(0, 100, 0, 100, -100, 100);    glTranslatef(0.0, 0.0, -10.0);            //这里显示文字        glPopMatrix();    glMatrixMode(GL_MODELVIEW);    glPopMatrix();
[解决办法]
上面写错了, 第三行 p' = p * Mw * Mc * Mp
探讨
即便计算出飞机的屏幕坐标,那有如何调用屏幕坐标系下的函数来显示数据呢。调用什么函数呢?

读书人网 >图形图像

热点推荐