1999-01-03 18:00:19 +01:00
|
|
|
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.
|
|
|
|
|
1999-01-23 13:34:36 +01:00
|
|
|
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).
|
|
|
|
|
1999-01-03 18:00:19 +01:00
|
|
|
Code structure
|
|
|
|
--------------
|
|
|
|
|
|
|
|
TODO (well, once the code will be put in the dll/ddraw directory)
|
|
|
|
|
|
|
|
Status
|
|
|
|
------
|
|
|
|
|
1999-01-17 17:55:11 +01:00
|
|
|
Some programs with which I tested the code :
|
1999-01-03 18:00:19 +01:00
|
|
|
|
1999-01-23 13:34:36 +01:00
|
|
|
* 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.
|
1999-01-03 18:00:19 +01:00
|
|
|
|
1999-01-17 17:55:11 +01:00
|
|
|
* 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
|
|
|
|
|
1999-01-23 13:34:36 +01:00
|
|
|
* 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.
|
1999-01-03 18:00:19 +01:00
|
|
|
|
|
|
|
TODO
|
|
|
|
----
|
1999-01-23 13:34:36 +01:00
|
|
|
* work on optimizing Execute Buffers (i.e. Direct3D 3.0)
|
1999-01-03 18:00:19 +01:00
|
|
|
* 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
|
1999-01-23 13:34:36 +01:00
|
|
|
Last updated : Tue Jan 19 1999
|