Introduction
------------

This file contains information about Wine's implementation of
Direct3D. 

The current version requires :
 * Mesa (tested with version 3.1 beta)
 * a display in 16bpp

To minimize the impact on DirectDraw (i.e. to reuse most of the code
already done for DirectDraw), I decided not to start with an
implementation based on GLX, but on OSMesa. This way, all the OpenGL
rendering are done in a 'private' memory buffer, buffer that will
copied back to the DirectDraw Surface each time a 3D scene
finishes. It is not optimal for execution speed (on each frame, the
OpenGL buffer is converted from 32 to 16 bpp and copied onto the
screen) but is for development (I had almost nothing to change in
DirectDraw). Moreover, 99 % of the code in the Direct3D implementation
is 'device independant' (i.e. GLX / OSMesa / whatever), so that
changing to GLX will have only a minor impact on Direct3D's code.

Code structure
--------------

TODO (well, once the code will be put in the dll/ddraw directory)

Status
------

I tested this code with two programs (all using Direct3D 5.0) :

 * BOIDS.EXE that comes with the 5.2 DirectX SDK : works great. Only
   thing missing is the texturing and transparency on the spinning
   gobes. Lighting seems to be a bit different than the Real One.

 * Tomb Raider II : works quite well (without texturing).

TODO
----
 * finish working on Execute Buffers (i.e. Direct3D 3.0)
 * texture mapping / blending effects
 * real GLX implementation (will need a complete rewrite of DirectDraw
   also) to have 3DFx support
 * restructuration of all the DDRAW.DLL (put that in the dll
   directory, better separation of 'drivers, ...)
 * start looking into DirectX 6.0
 * inquire on Mesa / XFree86 mailing lists about direct access to 
   display hardware (for games such as Tomb Raider II that displays 
   vertices that are already in screen coordinates)
 * look into thread safeness...

-- 
Lionel Ulmer - ulmer@directprovider.net
Last updated : Sun Jan 03 1999
