Skip to content
This repository was archived by the owner on Mar 19, 2025. It is now read-only.

Commit c004a05

Browse files
committed
test.pl extract dumpMatrices
1 parent 2c77bbd commit c004a05

File tree

1 file changed

+36
-34
lines changed

1 file changed

+36
-34
lines changed

test.pl

Lines changed: 36 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -114,9 +114,11 @@
114114
my @Light_Diffuse = ( 1.2, 1.2, 1.2, 1.0 );
115115
my @Light_Position = ( 2.0, 2.0, 0.0, 1.0 );
116116

117-
# Model/Projection/Viewport Matrices
117+
# Model/Projection/Texture/Colour Matrices, Viewport vector
118118
my $mm = OpenGL::Array->new(16,GL_DOUBLE);
119119
my $pm = OpenGL::Array->new(16,GL_DOUBLE);
120+
my $tm = OpenGL::Array->new(16,GL_DOUBLE);
121+
my $cm = OpenGL::Array->new(16,GL_DOUBLE);
120122
my $vp = OpenGL::Array->new(4,GL_INT);
121123

122124
# Vertex Buffer Object data
@@ -1325,47 +1327,47 @@ sub cbMouseClick
13251327
# Example of using GLU to determine 3D click points
13261328
if ($state == GLUT_UP)
13271329
{
1328-
print "\n";
1329-
1330-
glGetDoublev_c(GL_MODELVIEW_MATRIX,$mm->ptr());
1331-
my @model = $mm->retrieve(0,16);
1332-
1333-
glGetDoublev_c(GL_PROJECTION_MATRIX,$pm->ptr());
1334-
my @projection = $pm->retrieve(0,16);
1335-
1336-
glGetIntegerv_c(GL_VIEWPORT,$vp->ptr());
1337-
my @viewport = $vp->retrieve(0,4);
1338-
1339-
print "Model Matrix: $model[0], $model[1], $model[2], $model[3]\n";
1340-
print " $model[4], $model[5], $model[6], $model[7]\n";
1341-
print " $model[8], $model[9], $model[10], $model[11]\n";
1342-
print " $model[12], $model[13], $model[14], $model[15]\n";
1343-
1344-
print "Projection Matrix: $projection[0], $projection[1], $projection[2], $projection[3]\n";
1345-
print " $projection[4], $projection[5], $projection[6], $projection[7]\n";
1346-
print " $projection[8], $projection[9], $projection[10], $projection[11]\n";
1347-
print " $projection[12], $projection[13], $projection[14], $projection[15]\n";
1348-
1349-
print "Viewport: $viewport[0], $viewport[1], $viewport[2], $viewport[3]\n";
1350-
print "\n";
1351-
1330+
my ($model, $projection, $viewport) = dumpMatrices();
13521331
my @point = gluUnProject_p($x,$y,0, # Cursor point
1353-
@model, # Model Matrix
1354-
@projection, # Projection Matrix
1355-
@viewport); # Viewport
1332+
@$model, # Model Matrix
1333+
@$projection, # Projection Matrix
1334+
@$viewport); # Viewport
13561335
print "Model point: $point[0], $point[1], $point[2]\n";
1357-
1358-
# @point = gluProject_p(@point, # Model point
1359-
# @model, # Model Matrix
1360-
# @projection, # Projection Matrix
1361-
# @viewport); # Viewport
1362-
# print "Window point: $point[0], $point[1], $point[2]\n";
1336+
# @point = gluProject_p(@point, # Model point
1337+
# @model, # Model Matrix
1338+
# @projection, # Projection Matrix
1339+
# @viewport); # Viewport
1340+
# print "Window point: $point[0], $point[1], $point[2]\n";
13631341
print "\n";
13641342
}
13651343

13661344
$idleTime = $hasHires ? gettimeofday() : time();
13671345
}
13681346

1347+
sub dumpMatrices
1348+
{
1349+
print "\n";
1350+
glGetDoublev_c(GL_MODELVIEW_MATRIX,$mm->ptr());
1351+
my @model = $mm->retrieve(0,16);
1352+
glGetDoublev_c(GL_PROJECTION_MATRIX,$pm->ptr());
1353+
my @projection = $pm->retrieve(0,16);
1354+
glGetDoublev_c(GL_PROJECTION_MATRIX,$tm->ptr());
1355+
my @texture = $tm->retrieve(0,16);
1356+
glGetDoublev_c(GL_PROJECTION_MATRIX,$cm->ptr());
1357+
my @colours = $cm->retrieve(0,16);
1358+
for (['Model',\@model], ['Projection',\@projection], ['Texture',\@texture], ['Colour',\@colours]) {
1359+
printf "%-19s$_->[1][0], $_->[1][1], $_->[1][2], $_->[1][3]\n", "$_->[0] Matrix:";
1360+
print " $_->[1][4], $_->[1][5], $_->[1][6], $_->[1][7]\n";
1361+
print " $_->[1][8], $_->[1][9], $_->[1][10], $_->[1][11]\n";
1362+
print " $_->[1][12], $_->[1][13], $_->[1][14], $_->[1][15]\n";
1363+
}
1364+
glGetIntegerv_c(GL_VIEWPORT,$vp->ptr());
1365+
my @viewport = $vp->retrieve(0,4);
1366+
print "Viewport: $viewport[0], $viewport[1], $viewport[2], $viewport[3]\n";
1367+
print "\n";
1368+
(\@model, \@projection, \@viewport);
1369+
}
1370+
13691371
sub GetKeyModifier
13701372
{
13711373
return $key_mods->{glutGetModifiers()};

0 commit comments

Comments
 (0)