| 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. | |
| Where to find Mesa : | |
| -------------------- | |
| The home of Mesa should soon be http://www.mesa3d.org/ | |
| But for now, check http://www.ssec.wisc.edu/~brianp/Mesa.html | |
| For precompiled RPMs, use AltaVista or FTPSearch, but I prefer to 'Use | |
| the Source' :-) | |
| WARNING : if you experience crashes in D3DTexture2_Load, see file | |
| d3dtexture.c for a 'cure'. You could also patch your version of Mesa | |
| or wait for version 3.2b (that should have the bug corrected). | |
| Code structure | |
| -------------- | |
| TODO (well, once the code will be put in the dll/ddraw directory) | |
| Status | |
| ------ | |
| Some programs with which I tested the code : | |
| * BOIDS.EXE (DX5.0) : 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. | |
| * TWIST.EXE (DX3.0) : vertex transformation works as it | |
| should. Texturing and lighting still off. | |
| * Tomb Raider II (DX5.0) : works perfectly (but slowly). All the | |
| calls needed to make TR2 work have been written. | |
| * Jedi Knight (DX3.0) : does not start | |
| * Shadow of the Empire demo (DX3.0) : displays a mangled intro screen | |
| (only blue squares on the screen) | |
| * Forsaken Demo : starts to work. Texturing is missing and it is | |
| really really slow. | |
| * Grim Fandango (DX ?, seems to be 3.0 !!) : does not start. | |
| TODO | |
| ---- | |
| * work on optimizing Execute Buffers (i.e. Direct3D 3.0) | |
| * 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 : Tue Jan 19 1999 |