2012-02-09 13 views
2

で動作していないと、画面上のテキストを描画、これはperlのですが、それの言語に依存しない:GLUTは私が間違ってやっているのか分からない、すべて

この例は、例からsnowmansの多くを描きます私はウェブで見つけました: (私はそれをperlに移植しました)

問題は、レンダリングされるテキストの兆候がないことです。

sub renderScene{ 
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
     gluLookAt($x, 1.0, $z, 
      $lx,1.0,$lz, 
      0.0,1.0,0.0); 
     glColor3f(0.5, 0.2, 0.4); 
glMatrixMode(GL_MODELVIEW);  

     #Draw ground 
     glBegin(GL_QUADS); 
      glVertex3f(-100.0, 0.0, -100.0); 
      glVertex3f(-100.0, 0.0, 100.0); 
      glVertex3f(100.0, 0.0, 100.0); 
      glVertex3f(100.0, 0.0, -100.0); 
     glEnd(); 

     for ($i=-3; $i<3; $i++) 
     { 
      for ($j=-3 ; $j<3; $j++) 
      { 
       glPushMatrix(); 
       glTranslatef($i*10.0,0,$j*10.0); 
       drawSnowMan(); 
       glPopMatrix(); 
      } 
     } 
     glColor3f(0.5, 0.5, 0.0); 
     glRasterPos2f(0.5, 0.5); 
     my $strin = "Viva peron carajo!"; 
     my @string = split('',$strin); 
     for my $char(@string){ 
      glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, $char); 
     } 

     glutSwapBuffers(); 
    } 

答えて

0

あなたのコードが不完全です。 $x,$z,$lxおよび$lzは未定義であり、投影行列を設定するための呼び出しはありません。したがって、私は示唆を与えることができます:

glRasterPos座標は世界/モデル座標です。原文に近いテキストを置くことを本当に意味しましたか?可能であればセンターの雪だるまの中にありますか?

スクリーン座標で作業する場合は、適切な直交 "2D"投影行列を設定する必要があります。描画コマンドの間に投影行列をプッシュ/ポップ/プレイすることができます。

また、テキスト位置に三角形/四角形を描画することから始めます。

+0

申し訳ありませんが、私のレンダリングルーチンは、値が別の部分で定義されているので、コードはこれらの値を変更して動くカメラで動作します。私はGUIのように画面に書きたい。 – AlfredoVR

+1

@ alfa64:そのため、リサーブハンドラではなく、表示ルーチンにビューポートと投影の設定を配置する必要があります。テキストレンダリングでは、ビューポートと投影を適切に切り替えることができます。 – datenwolf

関連する問題