# IUP::CanvasGL example # # Creates a OpenGL canvas and draws a line in it. # This example uses gllua binding of OpenGL to Perl use warnings; use strict; use IUP ':all'; use OpenGL ':all'; my $cnv = IUP::CanvasGL->new( BUFFER=>"DOUBLE", RASTERSIZE=>"300x300" ); sub cb_cnv_action { my ($self, $x, $y) = @_; my ($w, $h) = split /x/,$self->RASTERSIZE; $self->GLMakeCurrent(); glViewport(0, 0, $w, $h); glClearColor(1.0, 1.0, 1.0, 1.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor3f(1.0,0.0,0.0); glBegin(GL_QUADS); glVertex2f( 0.9, 0.9); glVertex2f( 0.9, -0.9); glVertex2f(-0.9, -0.9); glVertex2f(-0.9, 0.9); glEnd(); $self->GLSwapBuffers(); return IUP_DEFAULT; } sub cb_cnv_k_any { my ($self, $c) = @_; if ( $c == K_q or $c == K_ESC ) { return IUP_CLOSE; } else { return IUP_DEFAULT; } } $cnv->ACTION(\&cb_cnv_action); $cnv->K_ANY(\&cb_cnv_k_any); my $dlg = IUP::Dialog->new( child=>$cnv, TITLE=>"IUP::CanvasGL Example", MINSIZE=>"300x300" ); $dlg->Show(); IUP->MainLoop();