我不知道我做错了什么,这是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();
}
答案 0 :(得分:0)
您的代码不完整。 $x
,$z
,$lx
和$lz
未定义,并且没有调用来设置投影矩阵。因此,我只能提出建议:
glRasterPos坐标是世界/模型坐标。你真的想把文字靠近原点,可能是在中心雪人里面吗?
如果要在屏幕坐标中工作,则应设置适当的正交“2D”投影矩阵。请记住,您可以在绘图命令之间使用投影矩阵推/弹/播放。
此外,首先在文本位置渲染三角形/四边形。