;; /* ;; * Copyright (c) 1993-1997, Silicon Graphics, Inc. ;; * ALL RIGHTS RESERVED ;; * Permission to use, copy, modify, and distribute this software for ;; * any purpose and without fee is hereby granted, provided that the above ;; * copyright notice appear in all copies and that both the copyright notice ;; * and this permission notice appear in supporting documentation, and that ;; * the name of Silicon Graphics, Inc. not be used in advertising ;; * or publicity pertaining to distribution of the software without specific, ;; * written prior permission. ;; * ;; * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" ;; * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, ;; * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR ;; * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON ;; * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, ;; * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY ;; * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, ;; * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF ;; * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN ;; * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON ;; * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE ;; * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. ;; * ;; * US Government Users Restricted Rights ;; * Use, duplication, or disclosure by the Government is subject to ;; * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph ;; * (c)(1)(ii) of the Rights in Technical Data and Computer Software ;; * clause at DFARS 252.227-7013 and/or in similar or successor ;; * clauses in the FAR or the DOD or NASA FAR Supplement. ;; * Unpublished-- rights reserved under the copyright laws of the ;; * United States. Contractor/manufacturer is Silicon Graphics, ;; * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. ;; * ;; * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. ;; */ ;; ;; * ;; * alpha.c ;; * This program draws several overlapping filled polygons ;; * to demonstrate the effect order has on alpha blending results. ;; * Use the 't' key to toggle the order of drawing polygons. ;; */ (use srfi-1 utils gl glu glut srfi-4) (define leftFirst gl:TRUE) (define *args* (argv)) ;; /* Initialize alpha blending function. ;; */ (define (init) (gl:Enable gl:BLEND) (gl:BlendFunc gl:SRC_ALPHA gl:ONE_MINUS_SRC_ALPHA) (gl:ShadeModel gl:FLAT) (gl:ClearColor 0.0 0.0 0.0 0.0)) (define (drawLeftTriangle) ;; /* draw yellow triangle on LHS of screen */ (gl:Begin gl:TRIANGLES) (gl:Color4f 1.0 1.0 0.0 0.75) (gl:Vertex3f 0.1 0.9 0.0) (gl:Vertex3f 0.1 0.1 0.0) (gl:Vertex3f 0.7 0.5 0.0) (gl:End)) (define (drawRightTriangle) ;; /* draw cyan triangle on RHS of screen */ (gl:Begin gl:TRIANGLES) (gl:Color4f 0.0 1.0 1.0 0.75) (gl:Vertex3f 0.9 0.9 0.0) (gl:Vertex3f 0.3 0.5 0.0) (gl:Vertex3f 0.9 0.1 0.0) (gl:End)) (define (display) (gl:Clear gl:COLOR_BUFFER_BIT) (if leftFirst (begin (drawLeftTriangle) (drawRightTriangle)) (begin (drawRightTriangle) (drawLeftTriangle))) (gl:Flush)) (define (reshape w h) (gl:Viewport 0 0 w h) (gl:MatrixMode gl:PROJECTION) (gl:LoadIdentity) (if (<= w h) (glu:Ortho2D 0.0 1.0 0.0 (* 1.0 (/ h w))) (glu:Ortho2D 0.0 (* 1.0 (/ w h)) 0.0 1.0))) ;; /* ARGSUSED1 */ (define (keyboard key x y) (case key ((#\t #\T) (set! leftFirst (not leftFirst)) (glut:PostRedisplay)) ((#\q) ;; /* Escape key */ ** Changed to "q" (exit 0)))) ;; * Open window with initial window size, title bar, ;; * RGBA display mode, and handle input events. ;; (glut:Init) (print "Use t to toggle drawing order of polygons and q to exit") (glut:InitDisplayMode (+ glut:SINGLE glut:RGB)) (glut:InitWindowSize 200 200) (glut:CreateWindow (list-ref *args* 1)) (init) (glut:ReshapeFunc reshape) (glut:KeyboardFunc keyboard) (glut:DisplayFunc display) (glut:MainLoop)