#!/usr/bin/perl -w
use FileHandle;
use strict;
use warnings;
use Carp;
$SIG{__DIE__} = sub {print Carp::longmess(@_);
die;};
STDOUT->autoflush(1);
STDERR->autoflush(1);
use PDL::Graphics::OpenGL;
my $numwins = shift;
$numwins = 1 unless(defined $numwins);
my @windows;
my $opt;
$opt->{width} = 90;
$opt->{height} = 90;
#PDL::Graphics::OpenGL::glpSetDebug(1);
foreach(0..$numwins-1){
$opt->{x} = ($numwins % 10) *100;
$opt->{y} = int($numwins / 10) *100;
my $win=new PDL::Graphics::OpenGL::OO($opt);
push @windows, $win;
}
my $angle=0;
use Data::Dumper;
my $out = Dumper($windows[0]);
print "$out\n";
while(1){
$angle++;
foreach my $win (@windows){
$win->glXMakeCurrent() || die "glXMakeCurrent failed\n";
if(PDL::Graphics::OpenGL::XPending($win->{Display})>0){
my @ev = PDL::Graphics::OpenGL::glpXNextEvent($win->{Display});
if($ev[0] == PDL::Graphics::OpenGL::ConfigureNotify){
glFlush();
glViewport(0, 0, $opt->{width}, $opt->{height});
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
}
}
# my $out = Dumper($win);
# print "$out\n";
glShadeModel(GL_FLAT);
glClearColor(0., 0.5, 0., 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef($angle, 0, 0, 1);
glBegin(GL_TRIANGLES);
# draw pink triangle
glColor3f(1.0, 0.3, 0.5);
glVertex2f(0, 0.8);
glVertex2f(-0.8, -0.7);
glVertex2f(0.7, 0.8);
glEnd();
glPopMatrix();
$win->glXSwapBuffers();
}
}