Skip to main content
GameDev.net gamedev.net
🔒 Locked

SlimDX or SharpDX ?

Started by CuboDeAgua Jan 29, 2011 at 3:09 PM 7 replies 9.9k views
Original Post
CuboDeAgua
CuboDeAgua
What do you think?

Has anybody some deep experience with SharpDX and can give his opinion?

Programmer16
Programmer16

What do you think?

Has anybody some deep experience with SharpDX and can give his opinion?


I have no experience with SharpDX, but one thing that I noticed is that it doesn't support Direct3D9 which, as far as I know, is still a majority of the market. It also doesn't support some of the other libraries (mainly XACT3, XInput, and DirectInput.)

Also, with it being generated directly from the native libraries, I doubt it takes advantage of C#'s major features.

On the pro side, it might be a little bit faster, it's somewhat platform independent (it states that [s]it[/s] Direct3D doesn't actually work with Mono, but they're working on it), and it stores each of the API's in separate assemblies.

In my honest opinion, it looks like it has potential, but isn't developed far enough where I would consider using it. SlimDX on the other hand has been around for a while, has some great minds working on it, and is very well supported.

Hope that helps!
user88
user88
Hi CuboDeAgua,

I'm know nothing about SharpDX. But I use SlimDX and DirectX 9 API for commercial project and want to tell you that I had no any problems with it for all time usage. Even more, few times i asked some question about SlimDX to its developers. They had give me fast and constructive response for all my questions.
CuboDeAgua
CuboDeAgua
I'll stay with SlimDx then. Thanks for the info ^^

I was interested just in avoiding the 32 bits and 64 bits differentiation (and the user installation of the slimDX package), but that's only a bit more of installation-updating code.

By the way... when will be possible to run directx in linux? Is anybody aware of that?

And... will it be possible to compile with mono and DX API and get directly a cross-platform program? Or am i dreaming?
_the_phantom_
_the_phantom_

doesn't support Direct3D9 which, as far as I know, is still a majority of the market.


This depends on market segment, but the Steam Hardware Survey says that WinXP is now 26.26% of the market with Win7/Vista having a combined share of 72.43% of the market with 56% of the market supporting DX10 in hardware and a further 5.6% supporting DX11 as of May last year so I would expect the numbers to be greater now.

Casual maket might paint a different picture however.
pikacc
pikacc
I suggest to use either SharpDX or SlimDX + DirectX11 and take advantage of "feature sets", which allows you to use DirectX 11 API and run it on DX9 hardware when you use features only from DX9.
Main advantage is DirectX 11 API which is much better than old DirectX9. You can also easily add optional features which takes advantage of DX 11 (tesselation, geometry shader, shader model 4, 5 etc...) and enable these features only when you detect DX10/11 hardware.
6677
6677

By the way... when will be possible to run directx in linux? Is anybody aware of that?
Probably never. Directx is windows only. Microsoft have no incentive to release it.
Wine can attempt to emulate directx functionality on linux otherwise your going to have to use something else.

Ogre3d has 2 bindings to .net. Ogredotnet and Mogre. Currently Mogre is the only one being actively developed and updated but is .net although mono support for cross platform applications is planned (but not going to come round any time soon). Ogredotnet does work in mono on mac and linux too but isn't actively developed and is binding an old version of Ogre.

Otherwise, irrlicht3d has a few .net/mono bindings although none seem to be particularly well documented and theres OpenTK which is an opengl framework which once again works with .net or mono on any platform.

Another option is monoxna which again doesn't seem to have been updated in while but aims to provide the same sort of functionality available in XNA but using openGL and mono rather than directx9 and .net
Along this route still there is monogame which is actively updated, once again providing XNA style syntax and function but using openGL and mono. Supports monodroid and monotouch too and windows metro (should work on windows 8 legacy mode though) and playstation suite support is planned for an upcoming release. Bastion for linux, macOSx and chrome all use monogame, which reminds me, I have the chrome version and still haven't played it XD



If you want to stick with windows then slimDX is probably the way to go, MOgre is also meant to be very good but I've not really seen it used anywhere, regular Ogre pops up quite a bit though if you want to see what its capable of.


Please note, I haven't used any of these myself, although monogame does interest me. I am currently trying to learn XNA.
21st Century Moose
21st Century Moose

[quote name='CuboDeAgua' timestamp='1296474415' post='4767435']
By the way... when will be possible to run directx in linux? Is anybody aware of that?
Probably never. Directx is windows only. Microsoft have no incentive to release it.
Wine can attempt to emulate directx functionality on linux otherwise your going to have to use something else.
[/quote]

The real question is - does it actually matter? API-specific code is a very small part of any renderer and a port from one to the other can be accomplished in a surprisingly short amount of time - windowing system interaction is probably the only really messy part left these days (and that has to be dealt with even with OpenGL anyway so it's not a relevant factor). There is value in having an API that is setup to maximize the strengths of one particular platform, just as there is value in having an API that is cross-platform. Both are valid perspectives, but they are different perspectives.

Time to kill this necro'd thread?
Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls. 

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.