Sign in to follow this  

New project: DirectX 9 VS DirectX 10

This topic is 3593 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi everyone, I'm starting a new game project; DirectX 10 sounds amazing, but I'm a little concerned about Windows XP users who wouldn't be able to run the application. Which API do newly-launched projects use these days? Thank you

Share this post


Link to post
Share on other sites
Well, you can't make everyone happy, but you have to do your best. It's much more work to implement both DirectX 9 and DirectX 10 renderers, which is exactly why I'm asking: what's the common approach to this question today?

Share this post


Link to post
Share on other sites
Well, let's think about it.... What did the last Steam hardware survey show? Something like 10% of gamers had Vista *and* a DX10 GPU.

So it's up to you, really. Do you want 10 or 100% of the Windows userbase to be able to play your game? [wink]

(hint: There's absolutely no point in targeting DX10 *exclusively*. You might do it *in addition* to DX9 support if you're feeling generous, but it'll be another couple of years or five, before it makes sense to ditch DX9 support.)

Quote:
Make it platform agnostic. It's never a good idea to tie anything with a specific implementation.

Sure it's a good idea. If you don't want to triple your workload, it's a very good idea to pick one target platform.

Share this post


Link to post
Share on other sites
Quote:
Original post by Sijmen
Make it platform agnostic. It's never a good idea to tie anything with a specific implementation. How about Linux/Mac users, or alternative platforms like game consoles?

I disagree. Targetting a specific platform is a good idea if you don't have oodles of time to spend on compatibility between separate platforms. In most cases, targetting D3D9 on Windows exclusively will net you the vast majority of the game market already. Linux/Mac compatibility is nice, but to be realistic it's just a small blip on the radar.

It depends on how long you're going to spend developing your game. I expect DX10 to become mainstream in a few years' time, at around the time of DX11 release. If your game isn't going to take that long to develop, you may as well make it DX9 (unless there's some specific reason to use DX10).

Share this post


Link to post
Share on other sites
What you should do is the following:

Create a directx9 dynamic linking library and create a directx10 dynamic library, then create a static library class wrapper for them containing the same functions. However, everytime you're calling the function from withing the game code, you call the function from the dll you loaded. Isn't that funky?

Share this post


Link to post
Share on other sites
Hello,

I would prefer DX 9, you will reach 90% of the market.
The approach with the different DLLs would be perfect, but only if you have enough time to develop, support and maintain two different implementations ... You will also need to limit yourself to the "lowest" and oldest API - DX9 in this case - or, to avoid this, your DLL interface would need to be that high-level that it would be easier to write two different applications ...

Also a very important consideration would be: Do I need features that are only available in DX10? I assume you don't.

Best regards
Porthos

Share this post


Link to post
Share on other sites
Quote:
Original post by MadMax1992
What you should do is the following:

Create a directx9 dynamic linking library and create a directx10 dynamic library, then create a static library class wrapper for them containing the same functions. However, everytime you're calling the function from withing the game code, you call the function from the dll you loaded. Isn't that funky?


It's really not as simple as that, for example if you use Geometry shaders in DX10, you simply cant run them in DX9 mode, similarly, if you use features intended for performance such as steam output, falling back to system bus transfers is going to be noticeable, even on a full link width PCIe card.

It's a long shot, but you could use OpenGL to expose most DX10 functionality in WindowsXP, but like I said, long shot.

IMO stick with DX9 if you're planning some kind of release, but if this is just for your own personal experience, maybe DX10 :)

Share this post


Link to post
Share on other sites
When do you expect the project to be finished, and what's the main thing you want to gain from it?

The farther into the future the publication date is, the more people you can expect to have DX10 capable hardware and OS.

As for the goal, is your main interest creating a game with the widest possible audience, or is it more of a way to learn an API and techniques relating to gaming?

As for the common approach, that'd also depend on the type of game. Games with advanced graphics tend to support both 9 and 10 these days. Casual games often don't use DX at all. I don't think any games use just DX10, but it's possible that some games with a release date in 2010 or further intend to use DX10 only.

Share this post


Link to post
Share on other sites
Quote:
Original post by Spoonbender
Well, let's think about it.... What did the last Steam hardware survey show? Something like 10% of gamers had Vista *and* a DX10 GPU.

So it's up to you, really. Do you want 10 or 100% of the Windows userbase to be able to play your game? [wink]

(hint: There's absolutely no point in targeting DX10 *exclusively*. You might do it *in addition* to DX9 support if you're feeling generous, but it'll be another couple of years or five, before it makes sense to ditch DX9 support.)

Quote:
Make it platform agnostic. It's never a good idea to tie anything with a specific implementation.

Sure it's a good idea. If you don't want to triple your workload, it's a very good idea to pick one target platform.

Yup this is also from Andre Lamothe's game programming rule #1:
Write your games for the most popular OS or something like that.

Share this post


Link to post
Share on other sites
Personally, I'd say forget making something that's DX9 AND DX10. You have to worry about cross compatibility between the two, implement the same feature on both of them, and constrain yourself to the lesser of the two, screwing you out of some of D3D10's features. I honestly don't see the point in making a D3D10 renderer if you've already got a D3D9 renderer, and vice versa will just be an extraordinary PITA.

I'd go for D3D9 if and only if you want compatibility. D3D10 is faster, and from what I've seen, much easier to work with because the API is so much cleaner. Plus, knowing that you can implement any feature in D3D10 and it just works would also be useful, I'm sure.

My choice would be dependant on the ETC of the project. If you're looking at a year or more, I would choose D3D10. Else, D3D9.

Share this post


Link to post
Share on other sites
Sure I don't mind if you just make a game for windows, but you don't have to be a cock about it.

It looks like about 10% of gamedev is not on Windows.

If you want your game to last 5-10 years into the future, then you should make it easy to port by abstracting the API away some if the library itself is not portable.

Right now there are many games I like that do 320x240 fullscreen in Windows, but my monitor doesn't support it. In linux I could still fully enjoy the games with Compiz.

It's good to stay on top of the technology wave, but you don't have to straight away jump to Vista/2008/D3D10 (I thought there wasn't a DirectX 10). Remember some people are still using DirectDraw (wish they wouldn't) or D3D7.

Share this post


Link to post
Share on other sites
DX9 is supported by 100% of Vista users on the PC, not sure about mac? And DX 9 is easily installable for all other XP users in your setup program. I can't see a reason to use DX10 on the lower hobbyist level. I don't see a reason to use DX10 ever (at this level). 9 is a good baseline right now because it's built into Vista. But the time The next version of windows comes out, who knows what will be supported and where.

A lot of PCs to this day are still shipping with 6100 or equivalent integrated cards. They can run any sane basic DX scenes fairly well, as long as you don't get into heavy shader use or after effects.

That's your audience.

No need to use a multi-api dll. You're writing games, not a rendering middleware package. It will become a big project on it's own, and having a dx10 renderer certainly won't make your game any better. Focus on content, not multiple APIs.

Share this post


Link to post
Share on other sites
Bah, if you really want both, just use OpenGL, end of story. You will be able to support Linux/Mac/Win95-Vista with DX10 features. Cant believe noone on this board is suggesting the most obvious answer, unless you've got something against GL or have a very good reason to stick with DX.

Share this post


Link to post
Share on other sites
Quote:
Original post by GamerSg
Bah, if you really want both, just use OpenGL, end of story. You will be able to support Linux/Mac/Win95-Vista with DX10 features. Cant believe noone on this board is suggesting the most obvious answer, unless you've got something against GL or have a very good reason to stick with DX.
Because it's not the most obvious answer. OpenGL comes with it's own set of problems, which include the huge amount of problems casual users have with finding out if they have it, and installing it. I have lived through a few nightmares trying to pass my programs on to my friends.

Many intel users have nothing but problems with OpenGL apps because of crappy drivers. I once updated an intel card to the newest 1.2 drivers, and they couldn't support multitexturing still. On a few OpenGL app forums I frequent, there is a nonstop stream of intel users posting all kinds of strange problems all the time. Intel users are a huge chunk of the casual game market.

I like OpenGL, don't get me wrong, but it's not a trouble free solution. Also, if you use OpenGL to use the DX10 features, you still need to write a fallback for the DX9 cards anyways.

DX9 works out of the box on Vista, and easily enough on XP if you need to silently install it. If someone isn't sure, it's as easy as typing dxdiag and finding out their info. Not so much with GL.

Share this post


Link to post
Share on other sites

This topic is 3593 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this