implemented collidehash
[sdlgit/SDL_perl.git] / test / OpenGL / test1.pl
CommitLineData
8fde61e3 1#!/usr/bin/env perl
2
3use SDL;
4use SDL::App;
5use SDL::Surface;
6use SDL::Event;
7use SDL::OpenGL;
8use SDL::OpenGL::Constants;
9
10#for ( keys %main:: ) {
11# print "$_\n";
12#}
13
14print "Starting $0\n";
15
16my $app = new SDL::App -w => 800, -h => 600, -d => 16, -gl => 1;
17
18print "Initializing OpenGL settings\n";
19printf "%-24s%s\n", "GL_RED_SIZE ", $app->attribute( SDL_GL_RED_SIZE() );
20printf "%-24s%s\n", "GL_GREEN_SIZE ", $app->attribute( SDL_GL_GREEN_SIZE());
21printf "%-24s%s\n", "GL_BLUE_SIZE ", $app->attribute( SDL_GL_BLUE_SIZE() );
22printf "%-24s%s\n", "GL_DEPTH_SIZE ", $app->attribute( SDL_GL_DEPTH_SIZE() );
23printf "%-24s%s\n", "GL_DOUBLEBUFFER ", $app->attribute( SDL_GL_DOUBLEBUFFER() );
24
25sub DrawScene {
26
27 glClear( GL_DEPTH_BUFFER_BIT()
28 | GL_COLOR_BUFFER_BIT());
29
30 glLoadIdentity();
31
32 glTranslate(-1.5,0,-6);
33
34 glColor(1,1,1);
35
36 glBegin(GL_TRIANGLES());
37 glColor(1,0,0) if (@_);
38 glVertex(0,1,0);
39 glColor(0,1,0) if (@_);
40 glVertex(-1,-1,0);
41 glColor(0,0,1) if (@_);
42 glVertex(1,-1,0);
43 glEnd();
44
45 glTranslate(3,0,0);
46
47 glBegin(GL_QUADS());
48 glColor(1,0,0) if (@_);
49 glVertex(-1,1,0);
50 glColor(0,1,0) if (@_);
51 glVertex(1,1,0);
52 glColor(0,0,1) if (@_);
53 glVertex(1,-1,0);
54 glColor(1,1,0) if (@_);
55 glVertex(-1,-1,0);
56 glEnd();
57}
58
59sub DrawColorScene {
60 DrawScene 'with color';
61}
62
63sub InitView {
64 glViewport(0,0,800,600);
65
66 glMatrixMode(GL_PROJECTION());
67 glLoadIdentity();
68
69 if ( @_ ) {
70 gluPerspective(45.0,4/3,0.1,100.0);
71 } else {
72 glFrustum(-0.1,0.1,-0.075,0.075,0.175,100.0);
73 }
74
75 glMatrixMode(GL_MODELVIEW());
76 glLoadIdentity();
77}
78
79InitView();
80
81DrawScene();
82
83$app->sync();
84
85$toggle = 1;
86
87$app->loop( {
88 SDL_QUIT() => sub { exit(0); },
89 SDL_KEYDOWN() => sub { $toggle = ($toggle) ? 0 : 1;
90 ($toggle) ? DrawScene() : DrawColorScene();
91 $app->sync();
92 },
93 } );