





                     3D Foundation Classes version 0.2.0






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



        Version

        Installing

        Compiling

        Features, BUGS, future plans

        Thanks

        Contributions

        Autor

        Copyright



     ---------
      Version
     ---------



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

        This is an 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 two targets (see Compiling section
        
        to know how compile for each available platform):
        
            Linux, using GCC;
        
            DOS, using DJGPP 2.

        The main diferences between the targets are:

          * Linux target don't has keyboard handler, need

            the graphic library SvgaLIB (many distributions of Linux

            install it by default). The Linux version include sockets
            
            suport for network comunication.

          * DOS target has a keyboard handler, don't need any extra
          
            graphic library and don't has sockets suport.

        Description of the directory tree:

            SRC          C++ library source code;

            EX           many library examples;

            LIB          is where the compiled object files be;

            DOC          documentation and specifications;

            OLD          old code, no more used;

            UTIL         have some utilitaries (not all of them for

                         all targets);

            UTIL/BIN     utils executables;

            UTIL/MKINS   the Make Install util;

            UTIL/CODS    the Cods util (undocumented);

            SRC/DJGPP    has DJGPP specific files.



     ------------
      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)!



     -----------
      Compiling
     -----------
         
         
         
        DOS TARGET PLATFORM

            DJGPP 2 must be installed.

            Rename the file djgpp.mak to makefile;

            Edit the file config.h, selecting the TRG_DJGPP,
            
            unselect TRG_LINUX and others;

            Execute one of the make options, jump the LINUX TARGET PLATFORM
            
            and goto to the MAKING section below.


        LINUX TARGET PLATFORM

            Need to be installed:

               GCC;

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

               SvgaLib.

            Rename the file linsvga.mak to makefile;
            
            Edit the file config.h, selecting the TRG_LINUX,
            
            unselect TRG_DJGPP and others;

            Execute one of the commands below.


        CONFIGURATION

            You can enable/disable some engine features to the
            
            system to your needs (speed,...). For this go

            to the file config.h and change it as you want.


        MAKING
        
            You must be in 3DFC root directory.

            * to make the library and examples:

                    make all              

            * to make only the library:

                    make library          

            * to make only the examples:

                    make examples         

            * to make only the utils:

                    make utils

            * to make a specific example or library object file:

                    make label_name       

              Try something like this, for example: make heap

              Labels for examples have the "ex" sufix in front of the name.

              See ex/examples.txt to get more info about the examples.



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


      
        Current features:

            indoor portal engine;

            6 DOF - directions of fly;

            collision detection (still have problems);

            primitive colored lights system;

            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);

            many examples;

            platforms: DOS (protected mode) and Linux;


        Current BUGS:

            well, something about 16 bugs, they change to much

            because this I don't include them here.


        Future plans:

            z-buffer;

            gourard shading;

            colored light sources;

            recursive object-inside portal rendering;

            object collision detection;

            Linux X port;

            better examples and documentation;

            texture with text;


        More plans:

            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;

            state machine for objects behaviors control;

            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 Direct X 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


        Andre (Clark)
        rotations and reference systems helps


        ARS
        for your discusions and ideas


        Carla Freitas
        for general computer graphics information


        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
        Linux instrodution


        Felipe Hents
        Small Linux helps


        Jacco Bikker
        ALPHA 2 is a great portal engine. I take many ideas from there.


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


        Lars Andersson
        a friend that help me asking many questions and swaping information.
        Your sources are helpfull to end my camera reference system, too.


        Leandro Bernsmuller
        me


        Paulo Martins Engel
        teach me neural networks


        Sander Kouwenhoven
        for your letters about "portal" technology


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



     ---------------
      Contributions
     ---------------


      
        People that help me contributing with sources, graphics,
        
        sounds, ...

           none



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



        Leandro Bernsmuller

        e-mail: lebe@geocities.com
                lebe@aton.inf.ufrgs.br

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

        I start this project in 1997. My intention is create an

        powerfull and fast 3D graphic engine to aplly it in many
        
        other projects.

        For DOS I want to make a game, for Linux I want to make an

        3D shell, like an 3D window manager, and much much more...



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



        This library and all files that come with, follow the GNU public

        license.
