在屏幕上绘制文本,GLUT根本不工作

时间:2012-02-09 06:21:10

标签: perl opengl glut

我不知道我做错了什么,这是perl,但它是语言不可知的(methinks):

这个例子从我在网上找到的一个例子中吸取了很多雪人: (我将它移植到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();
    }

1 个答案:

答案 0 :(得分:0)

您的代码不完整。 $x$z$lx$lz未定义,并且没有调用来设置投影矩阵。因此,我只能提出建议:

glRasterPos坐标是世界/模型坐标。你真的想把文字靠近原点,可能是在中心雪人里面吗?

如果要在屏幕坐标中工作,则应设置适当的正交“2D”投影矩阵。请记住,您可以在绘图命令之间使用投影矩阵推/弹/播放。

此外,首先在文本位置渲染三角形/四边形。