[Mono-dev] Managed DirectX

Stefan Dösinger stefandoesinger at gmx.at
Wed Oct 25 05:09:55 EDT 2006

I am one of the programmers of the Wine Direct3D implementation, and I 
wondered if there are any plans to implement Managed DirectX in Mono, and if 
it is possible to share efforts between wine and mono?

I googled around a bit, but couldn't find anything substancial, except that 
this was discussed for a SOC project, and that you have issues accessing COM 
objects from mono.

This is basically what the wine direct3d code looks like: We have 3 libraries 
for the various dx versions, ddraw.dll, d3d8.dll and d3d9.dll. Plans are 
going on for a d3d10.dll. Those libraries offer a binary and source 
compatible interface to Microsoft's Direct3D user mode interface. We do not 
implement the kernel-side DDI or gdientry/ddentry interface and we do not 
plan to do that.

ddraw.dll, d3d8.dll and d3d9.dll call our shared wined3d.dll library, which 
offers d3d9-like COM interfaces. We are considering dropping COM from wined3d 
because refcounting is a huge pita especially regarding ddraw.dll. WineD3D 
contains a basically feature-complete Direct3D9c implementation(but still way 
too buggy), and a software and opengl ddraw implementation(opengl ddraw is 
still buggy). The interface of this libarary is not stable, and may chance 
from wine to wine version, although this does not happen often.

If you want to use wine for managed directx you can use d3d9.dll, or wined3d 
directly(which will need stabilization of the interface before though). The 
COM interface of Direct3D(and the other dx libs) is not terribly complex, and 
it does not support all the things that makes COM fun. As long as you can 
dereference a pointer and call a function pointer you should be fine :-)

Stefan Dösinger
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.ximian.com/pipermail/mono-devel-list/attachments/20061025/9024d302/attachment.bin 

More information about the Mono-devel-list mailing list