+++ /dev/null
-#!/usr/bin/env perl
-#
-# lesson04.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use strict;
-use Getopt::Long;
-use SDL;
-use SDL::App;
-use SDL::OpenGL;
-use SDL::Event;
-
-my $arg_screen_width =640;
-my $arg_screen_height=512;
-my $arg_fullscreen=0;
-my $delay=30;
-
-GetOptions(
- "width:i" => \$arg_screen_width,
- "height:i" => \$arg_screen_height,
- "fullscreen!" => \$arg_fullscreen,
- "delay:i" => \$delay,
- ) or die <<USAGE;
-Usage $0 -w 800 -h 600 -d 10 --fullscreen
-USAGE
-
-#/* rotation angle for the triangle. */
-my $rtri = 0.0;
-
-#/* rotation angle for the quadrilateral. */
-my $rquad = 0.0;
-
-
-main();
-exit;
-
-
-sub main
- {
- my $done=0;
- my $app = new SDL::App ( -title => "Jeff Molofee's GL Code Tutorial ... NeHe '99",
- -icon => "icon.png",
- -width => $arg_screen_width,
- -height =>$arg_screen_height,
- -gl => 1,
- );
- $app->fullscreen() if $arg_fullscreen;
-
- SDL::ShowCursor(0);
-
- my $event = new SDL::Event;
- $event->set(SDL_SYSWMEVENT,SDL_IGNORE);#
-
-
-
- InitGL($arg_screen_width, $arg_screen_height);
-
- while ( ! $done ) {
-
- DrawGLScene();
-
- $app->sync();
- $app->delay($delay);
-
- $event->pump;
- $event->poll;
-
-
- if ( $event->type == SDL_QUIT ) {
- $done = 1;
- }
-
- if ( $event->type == SDL_KEYDOWN ) {
- if ( $event->key_sym == SDLK_ESCAPE ) {
- $done = 1;
- }
- }
- }
- }
-
-
-
-
-
-
-#########################################################################
-#Pretty much in original form, but 'Perlised'
-
-
-
-
-
-sub InitGL
- {
- my ($Width, $Height)=@_;
-
- glViewport(0, 0, $Width, $Height);
- glClearColor(0.0, 0.0, 0.0, 0.0); # This Will Clear The Background Color To Black
- glClearDepth(1.0); # Enables Clearing Of The Depth Buffer
- glDepthFunc(GL_LESS); # The Type Of Depth Test To Do
- glEnable(GL_DEPTH_TEST); # Enables Depth Testing
- glShadeModel(GL_SMOOTH); # Enables Smooth Color Shading
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity(); # Reset The Projection Matrix
-
- gluPerspective(45.0, $Width/$Height, 0.1, 100.0); # Calculate The Aspect Ratio Of The Window
-
- glMatrixMode(GL_MODELVIEW);
- }
-
-
-
-# The main drawing function.
-sub DrawGLScene
- {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); # Clear The Screen And The Depth Buffer
- glLoadIdentity(); # Reset The View
-
- glTranslate(-1.5,0.0,-6.0); # Move Left 1.5 Units And Into The Screen 6.0
-
- glRotate($rtri,0.0,1.0,0.0); # Rotate The Triangle On The Y axis
- # draw a triangle (in smooth coloring mode)
- glBegin(GL_POLYGON); # start drawing a polygon
- glColor(1.0,0.0,0.0); # Set The Color To Red
- glVertex( 0.0, 1.0, 0.0); # Top
- glColor(0.0,1.0,0.0); # Set The Color To Green
- glVertex( 1.0,-1.0, 0.0); # Bottom Right
- glColor(0.0,0.0,1.0); # Set The Color To Blue
- glVertex(-1.0,-1.0, 0.0); # Bottom Left
- glEnd(); # we're done with the polygon (smooth color interpolation)
-
- glLoadIdentity(); # make sure we're no longer rotated.
- glTranslate(1.5,0.0,-6.0); # Move Right 3 Units, and back into the screen 6.0
-
- glRotate($rquad,1.0,0.0,0.0); # Rotate The Quad On The X axis
- # draw a square (quadrilateral)
- glColor(0.5,0.5,1.0); # set color to a blue shade.
- glBegin(GL_QUADS); # start drawing a polygon (4 sided)
- glVertex(-1.0, 1.0, 0.0); # Top Left
- glVertex( 1.0, 1.0, 0.0); # Top Right
- glVertex( 1.0,-1.0, 0.0); # Bottom Right
- glVertex(-1.0,-1.0, 0.0); # Bottom Left
- glEnd(); # done with the polygon
-
- $rtri+=15.0; # Increase The Rotation Variable For The Triangle
- $rquad-=15.0; # Decrease The Rotation Variable For The Quad
-
-
- }
-
-
-
-