




                              3DGPL  Version 1.0
                             --------------------
                      GRAPHICS BASE LIBRARY AND TUTORIAL
                     ------------------------------------
                             FOR GAME PROGRAMMERS
                            ----------------------








           Copyright (c) 1995 Sergei Savchenko (savs@cs.mcgill.ca)




Contents:
---------
This package contains ascii files discussing following subjects:
1.txt: Hardware Interfaces: MS-DOS 16/32 bits; MS-WINDOWS 16/32 bits;
       X11; NeXTStep.
2.txt: 3D-transformations: rotations; perspective; fixed point math.
3.txt: Clipping: 2-D screen boundaries; 3-D volume.
4.txt: Rasterization: Lines; Ambient polygons; Shaded polygons; 
       Textured polygons.

It also contains C sources of a portable basis 3-D library compilant under 
MS-DOS(WATCOM-C,DJGPP,BORLAND-C),MS-WINDOWS, X-WINDOWS and NeXTStep,
with the following featured: BASIC HARDWARE INTERFACING; 3D-TRANSFORMATIONS; 
2D AND VOLUME CLIPPING; RENDERING OF AMBIENT, SHADED AND TEXTURED POLYGONS.



Usage and distribution:
-----------------------
           PROVIDED TEXT AND SOURCE CODE CAN NOT BE USED 
           FOR ANY COMMERCIAL PURPOSES WITHOUT AUTHORIZATION. 
           BOTH CAN BE FREELY DISTRIBUTED ON THE CONDITION 
           THAT NO FEE IS CHARGED AND THAT THE ORIGINAL 
           CONTENTS IS PRESERVED (NO ADDITIONS OR OMISSIONS). 
           SINCE THIS TEXT AND SOURCE CODE ARE PROVIDED FREE 
           OF CHARGE THERE IS ABSOLUTELY NO WARRANTY OR CLAIM 
           AS TO THEIR QUALITY OR FITNESS FOR ANY PARTICULAR 
           PURPOSE.


History...
----------
So, why did I do it? partly out of frustration with some 3-D books 
especially those for game programmers, partly guided by my own 
beliefs and experiences how software and educational texts are 
supposed to be written.

The library's C code is made pretty much based on the conviction
that things still may and should be made simple yet short and 
understandable, so hopefully is this text. 

There were few objectives I had when writing later: To avoid having 
unanswered questions including those of an as-an-exercise-to-the-reader 
kind; To try separate everything into preferably independent topics; and 
to, once again, keep things simple to the maximum possible extent. 

But in no way, what I finished with, is a complete description of 
all method available in 3D graphics, but it is to big extend an 
explanation of how the library's code is written, and a guide 
to, sometimes, pretty particular solutions, which I believe are 
valuable and suitable for programming of 3-D games.



How to use the library?
-----------------------
The library's code is organized in several directories:

/CLIPPER /HARDWARE /TRANS /ENGINE /GRAPHICS /DEMO

there's just one example source provided in the /DEMO directory 
together with few scripts which you might want to modify depending 
on the system and compiler you are using. You would also have to 
make sure particular hardware interface source is moved up into 
/HARDWARE directory from one of it's sub directories which are 
named after each supported system. 



Future...
---------
By looking at the contents you have already noticed that covered is but
a fraction of what is supposed to be covered. I may be tempted to continue 
only if there's sufficient enthusiasm and response to the present text. So 
if you are appreciative enough of my time and efforts please feel free 
proposing me co-authorship of a book, OR buying me new 20" monitor, 
OR red sports car, OR electing me to your company's board, OR SENDING 
ME FAT CHEQUE OR MONEY ORDER, OR just a post card. In any case, for 
any comments or inquires you may find me at: 


                              Sergei Savchenko 
                              4750 Dupuis #302 
                         Montreal PQ H3W-1N3 Canada
                               (514)-284-4908
                               (514)-344-0061 
                              savs@cs.mcgill.ca 
                       http:://www.cs.mcgill.ca/~savs


                                   * * *