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