#!/usr/local/bin/perl # Embedding OpenGL in a Tk Toplevel. use Tk; use OpenGL; $mw = MainWindow->new; $mw->Button(-text => 'OpenGL Demo', -command => \&opengl)->pack; $mw->Button(-text => 'Quit', -command => \&exit)->pack; sub opengl { $top = $mw->Toplevel(qw/-width 500 -height 500 -background pink/); $top->title('OpenGL Demo'); $top->waitVisibility; glpOpenWindow(parent=> hex($top->id), width => 450, height => 450); glClearColor(0, 0, 1, 1); glClear(GL_COLOR_BUFFER_BIT); glOrtho(-1, 1, -1, 1, -1, 1); glColor3f(0, 1, 0); glBegin(GL_POLYGON); $pi = 3.141592654; $d2r = $pi / 180.0; $nvert = 8; $dangle = 360 / $nvert; for ($angle = 0; $angle <= 359; $angle += $dangle) { $x = cos($angle * $d2r); $y = sin($angle * $d2r); glVertex2f($x, $y); } glEnd; glFlush; } MainLoop;