

  
                             3D Foundation Classes



                                *** READ ME ***



     -------------------
      Table of Contents
     -------------------



        Copyright

        About 3DFC

        Installing

        Compiling

        Features, BUGS, future plans

        Thanks

        Contributions

        Autor



     -----------
      Copyright
     -----------


 
        Copyright (C) 1999 Leandro Bernsmuller
        This program is free software; you can redistribute it and/or modify
        it under the terms of the GNU General Public License as published by
        the Free Software Foundation; either version 2 of the License, or
        (at your option) any later version.

        This program 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 General Public License for more details.

        You should have received a copy of the GNU General Public License
        along with this program; if not, write to the Free Software
        Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

        Details, read doc/license.txt.



     ------------
      About 3DFC
     ------------



        3D Foundation Classes, 3DFC, is a generic purpose,
        
        realtime, 3D graphics library.

        This is a pre-release of 3DFC for Linux and DOS (protected mode).

        To start learning see the file doc/index.txt, but read this
        
        file first, ok?

        The library can be compiled for 3 targets (see Compiling section
        
        to know how compile for each available platform):
        
            Linux, SvgaLib;

            Linux, X Window v11;
        
            DOS, compiler DJGPP 2.

        The main diferences between the targets are:

          * Linux SvgaLib target don't has keyboard handler, need

            the graphic library SvgaLib (many distributions of Linux

            install it by default).

          * Linux X Window target, the only graphics examples available

            are 'fly' and 'xwinapp', make using label: exfly, exxwinapp,
            
            respectively.

          * DOS target has a keyboard handler, don't need any extra
          
            graphic library and don't has sockets suport.
            
          * The Linux versions include sockets
            
            suport for network comunication using TCP/IP.


        Description of the main directory tree:

            src/         C++ library source code;

            ex/          some examples;

            obj/         where the compiled object files are (*.O files);

            doc/         some documentation and specifications;

            util/        have some utilitaries (not all of them for

                         all targets);

            makef/       has the general makefile

            notused/     stuff not used at the moment;

            util/bin/    place for some utils executables;

            src/port/    has sources used for some compilation platform, not all;



     ------------
      Installing
     ------------



        Unzip the .ZIP file with directory tree option. If you are using

        pkunzip follow the example:    pkunzip -d 3dfc.zip

        This create the needed directorys and decompress the files.

        WARNING: in Linux don't forget to unzip the files with lower case

        letters option ON (unzip -L)!

        If the file has extension GZ use:

          tar zxvf 3dfc_tar.gz

        or

           gunzip 3dfc_tar.gz

           tar xvf 3dfc_tar



     -----------
      Compiling
     -----------
         
         
         
        CONFIGURATION

            You can enable/disable some engine features to feet the
            
            system to your needs. Just edit the file config.h
            
            (more instructions in the file).


        DOS TARGET PLATFORM

            DJGPP 2 must be installed.

            Copy the file djgpp.mak to makefile;

            Execute one of the make options, see the MAKING section, below.


        LINUX SvgaLib TARGET PLATFORM

            Need to be installed:

               GCC;

               C math library with sin, cos and sqrt, normaly installed by default;

               SvgaLib.

            Copy the file linsvga.mak to makefile;

            Execute one of the commands below.

        LINUX X Window TARGET PLATFORM

            Need to be installed:

               GCC;

               X11;

               C math library with sin, cos and sqrt, normaly installed by default.

            Copy the file linxwin.mak to makefile;

            Execute one of the commands below.


        MAKING
        
            You must be in 3DFC root directory.

            * to make everything:

                    make all              

            * to make only the library:

                    make library          

            * to make only the examples (first make the library):

                    make examples         

            * to make only the utils (first make the library):

                    make utils

            * to make a specific file:

                    make label_name       

              Try something like this, for example: make heap

              Examples have the "ex" sufix in front of the
              
              label; the utils labels have sufix "ut".



     ------------------------------
      Features, BUGS, future plans
     ------------------------------


      
        Current features:

            indoor portal engine;

            6 DOF - directions of fly;

            collision detection (still have problems);

            affine texture mapping;

            PCX file load;

            sockets suport (only for Linux);

            Back Propagation neural network;

            Object-oriented design;

            graphics with 320x200, 256 colors;

            keyboard handler (only for DOS);

            platforms: DOS (protected mode) and Linux;

            gouraud shading;

            colored light sources;

            message system (under construction);

            Linux X port (run on any BPP);


        Current BUGS:

            well, they change to much

            because this I don't include them here. But they

            exist, believe me! ;)

            See doc/bugs.txt.


        Future plans:

            recursive object-inside portal rendering;

            object collision detection;

            poly deph-sort;

            better examples and documentation;

            texture with texts;

            better sockets communication;

            state machine for objects behaviors control;


        More plans:

            z-buffer;

            transparency;

            mirrors;

            perspective texture mapping;

            texture mapping with tile mapping, too;

            enviroment mapping;

            MIP mapping;

            light mapping;

            hierarchycal objects;

            portal clip with polygon edge intersections;

            polygon mesh with distance-poly-trees refinement (LOD);

            ASC files load, Quake files load (maybe);

            gravity and other forces;

            particle systems with transluced voxels;

            sound;

            Windows DirectX port;

            GIF and JPG suport.



     --------
      Thanks
     --------



        all people behind DJGPP and Linux
        without DJGPP and Linux things would be very boring


        Alexandre Torres
        rotations, reference systems helps and ideas


        Alfredo
        tell how to profile under Linux


        Andre (Clark)
        rotations and reference systems helps


        ARS
        for your discusions and ideas


        Carla Freitas
        for general computer graphics information

        
        Christian Azambuja Pagot
        donate one bus ticket in exchange to download 3DFC    ;-)


        Denthor of Asphyxia
        nice programming tuts, without them I only could do
        text programs ;)


        Glauco Ferreira Martins
        interpolation projections method (3D to 2D special technic).


        Iuri Wickert
        Felipe Hents
        general Linux helps


        Jacco Bikker
        ALPHA 2 I take many ideas from this portal engine.


        Janne Lof
        I study your polygon functions to code my own polygon functions.


        Lars Andersson
        I swap many information with he.
        Your sources are helpfull to end my camera reference system, too.


        Leandro Bernsmuller
        me


        Paulo Martins Engel
        neural networks


        Paulo R. T. Britto (secneb@hotmail.com or abritto@svn.com.br)
        explanation about fast sqrt


        Sander Kouwenhoven
        for your letters about "portal" technology
 
 
        Tommy Frandsen 
        Harm Hanemaayer
        and all who contributed
           for SvgaLib


        Shawn Hargreaves
        autor of Allegro - a game programming library for DJGPP.
        Very helpfull to do my keyboard handler and makefile.

        
        Marcelo Bihre
        provide the old mirror for geocities
        


     -------
      Autor
     -------



        Name: Leandro Bernsmuller

        e-mail: lebe@geocities.com

        homepage: http://www.geocities.com/SiliconValley/Bay/1704

