相关疑难解决方法(0)

使用GLUT在3D OpenGL世界中显示固定位置的2D文本

我有一个OpenGL使用GLUT(而不是freeglut)的项目,其中我想在固定位置的视口上显示2D文本.其余的物体都在3D世界坐标中.

这个相关旧问题的答案说,

GLUT附带的位图字体是简单的2D字体,不适合在3D环境中显示.但是,它们非常适合需要覆盖在显示窗口上的文本.

我已经尝试了接受的答案中概述的方法,但它没有给我所需的输出.以下是显示功能的代码片段:

void display()
{
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

  glLoadIdentity();  
  glTranslatef(0.0, 0.0, -(dis+ddis));   //Translate the camera
  glRotated(elev+delev, 1.0, 0.0, 0.0);  //Rotate the camera
  glRotated(azim+dazim, 0.0, 1.0, 0.0);  //Rotate the camera

       .
       .
       .
  draw 3D scene
       .
       .
       .

  glMatrixMode(GL_PROJECTION);
  glPushMatrix();
  glLoadIdentity();
  gluOrtho2D(0.0, win_width, 0.0, win_height);
  glMatrixMode(GL_MODELVIEW);
  glPushMatrix();
  glLoadIdentity();
  glRasterPos2i(10, 10);
  string s = "Some text";
  void * font = GLUT_BITMAP_9_BY_15;
  for (string::iterator i = s.begin(); i != s.end(); ++i)
  {
    char …
Run Code Online (Sandbox Code Playgroud)

c++ opengl glut

7
推荐指数
2
解决办法
2万
查看次数

glutBitmapCharacter定位文本错误

我正在尝试在屏幕上绘制一个简单的字符串(叠加).

从我在互联网上发现的,我用这种方式:

void write(string text, int x, int y){
    glRasterPos2i(x,y);

    for(int i = 0; i < text.length(); i++){ 
        glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, text.data()[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

但它根据世界坐标绘制字符串.比如说,如果x和y设置为10,它们将被绘制在世界的(10,10,0)坐标处.但我简单地需要在2D的窗口(10,10)坐标处使用此字符串.

这是一个小项目的一部分,绘制方法如下.我不想改变它,因为它可能会打破项目中的其他东西.

void disp(){
 // set viewing translation and object rotations
 glMatrixMode( GL_MODELVIEW );
 glLoadIdentity ();
 glTranslatef( INIT_VIEW_X, INIT_VIEW_Y, INIT_VIEW_Z );
 glRotatef( xRot, 1.0, 0.0, 0.0 );
 glRotatef( zRot, 0.0, 0.0, 1.0 );
 glScalef( scaleFactor, scaleFactor, scaleFactor );
 glClear(GL_COLOR_BUFFER_BIT);
 draw();
 glFlush();
}
Run Code Online (Sandbox Code Playgroud)

我也不完全知道他们做了什么,我认为将文本绘制到世界坐标与此代码中的某些内容有关.我也尝试过使用GLUT位图字体,但它也不起作用.

我怎样才能简单地绘制到屏幕上.OpenGL过度复杂化了; 我试着简单地写到窗口,但它需要整个过程并转换为3D世界.我只是不想要这个.

c++ opengl glut

3
推荐指数
1
解决办法
8098
查看次数

标签 统计

c++ ×2

glut ×2

opengl ×2