首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

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

2012-03-09 
OpenGL中的英文字符显示问题在编一个飞机仿真飞行的软件,想在屏幕上实时显示飞机的飞行状态信息:位置,速度

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 
探讨
即便计算出飞机的屏幕坐标,那有如何调用屏幕坐标系下的函数来显示数据呢。调用什么函数呢?

热点排行