Overview: --------- See the file doc/lib3d.html for an overview. Mailing List ------------ The mailing list is dead. If you can help rebuild it, please contact me. Problems: --------- See the file doc/low-level because it's the only other documentation. If problems persist, send me the following information: - Exactly what the problem is. - The exact circumstances under which your problem occurs. - The version of lib3d you are using. - The output of xdpyinfo (important if you aren't using 8bpp) - The output of the configure script (see below) and the contents of the file config.log. Compiling: ---------- For UNIX: 1) Run the configure script from this directory, eg: $ ./configure Under some (maybe many) systems, it is necessary to explicitly state the X paths. I know this is the case on OSF/1 systems: $ ./configure --x-includes=/usr/X11/include --x-libraries=/usr/X11/lib you can also try: $ ./configure --help 2) Run make from this directory: $ make For DOS / djgpp: You need binutils 2.8.1 or better - version 2.7 does not work ! You will also need the Allegro framebuffer library version 3. Color depths 8, 16 and 24 are supported (lib3d's 24-bit depth internally maps to Allegro's 32-bit). 1) Simply run make: make -f Makefile.dj2 Demo Programs: -------------- These are the most interesting demos, and are built by the default target in the makefile: testnff: You should see a window showing a rotating teapot, initially quite close, and then a little further away. Some timing statistics are printed. The teapot model has 240 polygons, and is rendered 1024 times in each view. The process is repeated with gouraud shading, wire frame and texture mapping. testobj: Much like demo3d, but the teapot has 3751 polygons. Makes for much more impressive performance figures. Also makes for much saner frame rates (44fps vs 200fps on my P100). testplg: A nice plant model. testcube: Some rotating cubes. Less interesting, but useful if you are working on lib3d: testmod - Rotate a 4 polygon pyramid. testvis - Put the rasterization engines through some simple tests. testdev - Test the interface to the underlying display mechanism. testmat - Maths maths maths. Todo List: ---------- If you like the look of something here, feel free to join right in... - The major concentration of effort has been on the rendering of an existing object hierarchy. Work needs to be done in the areas of construction and ongoing manipulation of these hierarchies. This includes: - Readers for popular file formats. - Structure sharing within the hierarchy, which is currently a strict tree, but should be a DAG. - Mechanisms for reparenting subtrees. - Reexamination of the restriction of a single pipeline (rendering style) to a model. - Mouse and keyboard abstractions. - Some neat demos. Like a gyrating digital clock screensaver, for instance. - More substantial programs. Some known bugs: ---------------- - Objects close to the far clipping plane tend to self-obscure due to a bug with z calculation in the older viewports and the new flat-shaded code. - The wireframe pipeline can overdraw the boundaries of the viewport by a single pixel on the right and bottom, causing crashes in many circumstances. - Texture buffers always represent pixels using 32 bits. This is a waste of space and hurts cache consistency. Use of 256 colours with a LUT where necessary might prove faster as well as more memory-efficient. - Texture mapping could be faster.