Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


The death of D3D9


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
46 replies to this topic

#21 N.I.B.   Members   -  Reputation: 1195

Like
1Likes
Like

Posted 24 October 2013 - 02:01 PM


I think that we still are not (unfortunatelly) in the times when XP is dead and you can easily ignore it

From what I know, XP is used mostly in the corporate market, not consumers market. If you bought a PC in the last 4-5 years, you probably don't have WinXP. In that sense - XP is dead and gone.

And if XP is gone, DX9 is gone.

 

Which leads me back to the conclusion that beginners should treat DX9 as deprecated, and just stay away from it.


Edited by satanir, 24 October 2013 - 02:04 PM.


Sponsor:

#22 ericrrichards22   Members   -  Reputation: 788

Like
2Likes
Like

Posted 24 October 2013 - 02:21 PM

I really don't think it makes much sense to work on DirectX 9 anymore...  Just look at this Steam Hardware Survey data http://store.steampowered.com/hwsurvey/videocard/.

95% of Steam users (or at least the ones included in the survey, I'm not totally sure how its calculated, and can't find it quickly), have DX10/11 video cards.

Only about 7% are using XP.

 

It is a little unfortunate that there are so many books that were written during the DX9 age, and comparatively fewer written since; I've got a handful of quite excellent books I picked up a few years ago that are all written to DX9, on topics that don't have a lot of coverage in newer books.  Personally, I think the most difficult part of my transition from DX9 to DX11 was the ID3DXMesh class and all of its functionality going away; code that made heavy use of these helper methods is not the easiest to convert, since you really have to learn and understand 3D math.


Eric Richards

SlimDX tutorials - http://www.richardssoftware.net/

Twitter - @EricRichards22


#23 RobMaddison   Members   -  Reputation: 736

Like
0Likes
Like

Posted 24 October 2013 - 05:08 PM

What about if you are/ r were in the last year or so, targeting Xbox 360, that's DX9 - still very much in play if you ask me

#24 N.I.B.   Members   -  Reputation: 1195

Like
1Likes
Like

Posted 25 October 2013 - 12:32 AM


What about if you are/ r were in the last year or so, targeting Xbox 360, that's DX9 - still very much in play if you ask me

True, but for people starting to learn graphics now, that doesn't make sense.



#25 RobMaddison   Members   -  Reputation: 736

Like
0Likes
Like

Posted 25 October 2013 - 02:17 AM

What about if you are/ r were in the last year or so, targeting Xbox 360, that's DX9 - still very much in play if you ask me

True, but for people starting to learn graphics now, that doesn't make sense.

Fair point. My engine is in DX9 and I'm kind of dreading the upgrade to DX10+ as I know exactly how everything works and I don't really have time to learn/implement a new/updated API.

#26 N.I.B.   Members   -  Reputation: 1195

Like
0Likes
Like

Posted 25 October 2013 - 02:43 AM


Fair point. My engine is in DX9 and I'm kind of dreading the upgrade to DX10+ as I know exactly how everything works and I don't really have time to learn/implement a new/updated API.

I felt the same way when I switched to DX10, but once I got the hang of it, i never looked back.

I remember that about 2 years ago I had to optimize some DX9 apps, and I kept asking myself why couldn't it look more like DX10 (and how the hell did I get to work on DX9, but that's a completly different story).



#27 Anddos   Members   -  Reputation: 508

Like
0Likes
Like

Posted 25 October 2013 - 10:03 AM

The new dayz standalone game is going to be made with dx9,you can still make good things with it

People might just want to start with the basics and wait till there ready for dx10/dx11


:)

#28 mhagain   Crossbones+   -  Reputation: 8141

Like
3Likes
Like

Posted 25 October 2013 - 03:39 PM

The new dayz standalone game is going to be made with dx9,you can still make good things with it

People might just want to start with the basics and wait till there ready for dx10/dx11

 

...but "the basics" can be done with 10/11 too (and you can write some quite complex and advanced stuff with 9).

 

As many have said upthread, 9 can actually be even more fiddly and complex - compare a mess of SetTextureStageState calls for achieving a multitextured blend effect with just a handful of ALU ops in a shader - the shader code is immediately clearer, easier to maintain and more expressive.

 

Thinking that the FFP is somehow "simpler" is a bad case of falling into the wrong way of thinking.  Thinking that 10 or 11 are more complex is likewise.


It appears that the gentleman thought C++ was extremely difficult and he was overjoyed that the machine was absorbing it; he understood that good C++ is difficult but the best C++ is well-nigh unintelligible.


#29 Tom KQT   Members   -  Reputation: 1612

Like
0Likes
Like

Posted 26 October 2013 - 03:10 AM

 

Thinking that the FFP is somehow "simpler" is a bad case of falling into the wrong way of thinking.  Thinking that 10 or 11 are more complex is likewise.

 

It is simpler to start - you need MUCH less code to get your first 3D application working and you don't need to learn so much (you don't need to learn the principle of shaders, HLSL etc.).

It is simpler when you don't need anything complex. You just set the proper states and you're done.

 

But once you start using shaders, you don't want to go back. You suddenly think that it is simpler to do anything with them, even the very basic stuff. As you say, it's clearer, easier to maintain, more expressive. But this is true only when you already know to bring the shaders to life, if you have your code (or even engine) that you can quickly re-use and you can immediately start making the game logic, without writing tens of code rows only to load the hlsl files, compile them, create shaders, set registers, set shaders before rendering etc.

 

Seriously - just setting states and transform matrices IS simpler. But also limited. That's why it's called FIXED function pipeline ;) There's a huge difference between a configurable element in the pipeline (you can simply configure it, but the flexibility is limited) and a programmable element (you must programm it in a more complex way, but you have huge flexibility).



#30 Juliean   GDNet+   -  Reputation: 2694

Like
1Likes
Like

Posted 26 October 2013 - 05:33 AM

Am I the only one who finds DX9 not all that extremly different than DX11? It could be the matter of fact that I started with shaders right away when learning DX9, and don't get me wrong i do like DX11's interface much more since its way cleaner, but the key concepts still remain. Individual states have been replaced by state objects, cbuffers instead of constant registers, and so on, but honestly, if you have learned DX9 without the FFP, it shouldn't be too hard to switch to DX11, and you'd already have learned a lot of concepts you need for eigther API...



#31 mhagain   Crossbones+   -  Reputation: 8141

Like
0Likes
Like

Posted 26 October 2013 - 06:04 AM

Am I the only one who finds DX9 not all that extremly different than DX11? It could be the matter of fact that I started with shaders right away when learning DX9, and don't get me wrong i do like DX11's interface much more since its way cleaner, but the key concepts still remain. Individual states have been replaced by state objects, cbuffers instead of constant registers, and so on, but honestly, if you have learned DX9 without the FFP, it shouldn't be too hard to switch to DX11, and you'd already have learned a lot of concepts you need for eigther API...

 

You're not the only one.  The kind of thinking you need to do about how you manage your objects and (many, but not all) of your states is very similar if using shaders and vertex buffers/declarations for everything in D3D9.  Some states and other API differences can lead to a fairly large restructuring of code, however; particularly if using Effects in D3D9.

 

It is simpler to start - you need MUCH less code to get your first 3D application working and you don't need to learn so much (you don't need to learn the principle of shaders, HLSL etc.).

It is simpler when you don't need anything complex. You just set the proper states and you're done.

 

If you look upthread, I made much the same observation; you'll get no arguments from me on that count.

 

Seriously - just setting states and transform matrices IS simpler.

 

It's simpler if you're doing simpler stuff.  As soon as you go to even moderately complex stuff than can still be handled by the FFP, it can become a horrible nightmare.  To take a small example I did recently: I wanted to capture the screen image, greyscale it, then shift it to a brown-ish colour.  IIRC I had to go into BumpEnvMap stuff to do that with FFP, and it was a 4 stage blend, not to mention the extra potential problems that could arise if I'd neglected to shut down states properly (always a key problem, often overlooked).  By comparison it was one line of HLSL code - boom, done, and no state shutdown concerns.


It appears that the gentleman thought C++ was extremely difficult and he was overjoyed that the machine was absorbing it; he understood that good C++ is difficult but the best C++ is well-nigh unintelligible.


#32 N.I.B.   Members   -  Reputation: 1195

Like
0Likes
Like

Posted 26 October 2013 - 06:05 AM


Am I the only one who finds DX9 not all that extremly different than DX11...
...Individual states have been replaced by state objects, cbuffers instead of constant registers, and so on...

The entire programming model is different. State objcets, CBs, views - DX10 is a very different language than DX9. The code is structured differently, the API is tighter, resulting code is cleaner and shorter, easier to debug.

Is it easy to switch from DX9 to DX10? For me it was, but I know a lot of people that had difficulty with some newer concepts(views, for example).

 

Question is, should newbies bother with DX9?

There are some good open-source DX11 frameworks, some good beginner level DX10 books, there's really no reason to start with DX9.



#33 Juliean   GDNet+   -  Reputation: 2694

Like
0Likes
Like

Posted 26 October 2013 - 10:38 AM


You're not the only one. The kind of thinking you need to do about how you manage your objects and (many, but not all) of your states is very similar if using shaders and vertex buffers/declarations for everything in D3D9. Some states and other API differences can lead to a fairly large restructuring of code, however; particularly if using Effects in D3D9.

 

Ah yes, thats a good point, I've been using my own effect/mesh/sprite/font classes build from Direct3D-"primitives" in the recent project before switching to DX11, I think that played a big part too. If you aren't relying on the D3DX-stuff and do everything by hand, upgrading is a lot easier, since otherwise you'll have to come up with a solution for those things from ground up - and it doesn't make things easier if you've been used to have your D3DXEffect and D3DXMesh interfaces and now not only need to get the API to work, but also have to write those things before you can even see if what you've been doing is working at all.

 


The entire programming model is different. State objcets, CBs, views - DX10 is a very different language than DX9. The code is structured differently, the API is tighter, resulting code is cleaner and shorter, easier to debug.

Is it easy to switch from DX9 to DX10? For me it was, but I know a lot of people that had difficulty with some newer concepts(views, for example).

 

Don't get me wrong, I do also see that API as much cleaner/better (IMHO) to work with, but as I said, for me that changes where rather trivial. I didn't see that much difference in setting a state object VS setting the individual states. I must add, I've been using an API agnostic graphics wrapper interface that I've only had to implemented out for DX11, as well as a low-level render queue for processing state settings, so I quess that aided a lot. This also allowed me to directly view my progress in the game I've already made. I suppose, if you'd been used to using directx-commands directly in "high-level" game code, it would probably be more difficult.

 


Question is, should newbies bother with DX9?

There are some good open-source DX11 frameworks, some good beginner level DX10 books, there's really no reason to start with DX9.

 

I do agree that it was probably better to start with DX11 now on, for the cleaner API, etc... . Time spent on learning DX9 sub-FFP I don't belive to being lost though, especially if you plan on supporting Windows XP, since it teaches you the key concepts that are similar in any graphics API.



#34 Tom KQT   Members   -  Reputation: 1612

Like
0Likes
Like

Posted 26 October 2013 - 02:25 PM


Don't get me wrong, I do also see that API as much cleaner/better (IMHO) to work with, but as I said, for me that changes where rather trivial. I didn't see that much difference in setting a state object VS setting the individual states.

Well, it's still Direct3D and it's still a graphics API, so the basic principles will be very similar ;) But besides this, the changes were quite big. Or maybe it's more fair to say that they weren't big, but there was a lof of them.



#35 aioria   Members   -  Reputation: 131

Like
0Likes
Like

Posted 26 October 2013 - 10:49 PM

I know a reason, just for the passion of learning and knowing things and the challenge.

 

I know for a fact that some so called programmers feel complete and comfortable just making calls to methods that they don't know how they work(sometimes there is no way around this, we all end up doing this at some point). D3D9 is extremely easy D3D11 is even easier, so if you're just interested in the final result of things pick the easiest one or else if you're like me learn them all their differences, pros an cons, try to make a software rasterizer learn assembler, for god-sake! we're programmers, we like to learn how to do things the easy way and the hard way.

 

D3D9 does not die if you keep using it, in the end is all the same, sometimes I use visual c++ 6.0 just because I like it, I also use turbo C or turbo pascal and even turbo assembler. because I like the feeling of going back and do stuff I like. if you're a beginner learn all you can don't limit yourself, try the hardest stuff you can manage and while you're at it try also to be up to date.



#36 DwarvesH   Members   -  Reputation: 471

Like
0Likes
Like

Posted 28 October 2013 - 03:32 AM

Just trowing my two cents here: DirectX 9 today is not your daddy's DirectX 9. If you are avoiding the fixed pipeline and FVF, there is very little difference between a pure HLSL DirectX 9 and other versions. Sure, the setup code and resource creation API are drastically different, but once you are over that step, the code is basically the same. With a very thin abstraction layer you can easily switch between versions at compile time. It is harder to switch at run time though. 

 

I intentionally use DirectX 9 exclusively to maximize the hardware coverage and to keep me on my toes. Think of it this was: some of the best engines out there were done in DirectX 9 and what other engines and versions of DirectX added are either trivial to add once you upgrade or ridiculously hard because of the subject matter. So using DirectX 9 keeps you from getting too lazy happy.png . I also make sure to use the lowest version of shader possible because on current hardware, that is just a fake limitation. This way you won't go overboard and write long and expensive shaders that could be written in a better way.

 

I think you should learn and conquer most that can be done in DirectX 9 and once you do, you will find that if you did an excellent job, you will have and excellent engine/renderer that barely lacks anything. On the other hand, DirectX 10 does have some worthwhile things to add. Alpha to coverage may not give you as much control as the DirectX equivalent, but it is a lot faster. Cleaner and more explicit data types are also a big plus.

 

What I'm saying that if you are going to render a cube or do anything that Unity or other engines do 10 times better, why bother with using DirectX and why go with the latest and most exclusive one? Are you really going to use all those new features?



#37 Tom KQT   Members   -  Reputation: 1612

Like
3Likes
Like

Posted 28 October 2013 - 04:24 AM

It sounds that some of us can probably agree on some points:

 

- New programmers wanting to learn Direct3D now have no real reason to waste their time learning 9.0c first, because by the time they manage to make their first game, WinXP and 9.0-only cards will be really sparse.

- Existing 9.0c engines (shader-based) don't have to be redone in 10/11 yet unless there is a real need for some 10/11 features. That wouldn't actually help much, but would limit the target audience (albeit not drastically).



#38 crazy_crab   Members   -  Reputation: 183

Like
0Likes
Like

Posted 29 October 2013 - 01:00 AM

newbies use D3D9, maybe because still there are more tutorials and books on D3D9 than D3D10/11 and for very smaller or startup projects,IMO d3d9 is easy to use and setup.but yeah learning FF pipeline is waste of time now.



#39 Flimflam   Members   -  Reputation: 657

Like
0Likes
Like

Posted 31 October 2013 - 11:46 PM

I think D3D9 is still so prevalent among newbies because of how easy it is to get into and no real reason to use 11. D3D9 isn't really that bad. Unless you're doing really fancy things in 3D (something a newbie would not be doing), you don't even need shader levels higher than 3. When you also consider that most AAA studios are still pushing out D3D9 games with optional D3D11 binaries, it just doesn't seem all that imperative to go there.

 

Even considering their odds of releasing a game before XP becomes insignificant, it might just not seem worth the risk. They might end up with a Terraria or something pretty early on. As I recall, that game was something made as something of a learning experience for the developers. 



#40 Tom KQT   Members   -  Reputation: 1612

Like
0Likes
Like

Posted 01 November 2013 - 02:52 AM

Yea, D3D9 is still great. But I wouldn't really suggest it for people who want to start learning D3D these days. Sure, it's faster to start with than with 10/11. BUT - that applies if you use the FFP and you won't be able to stay with that for a long time. If you want just to try something, see how it works, but have no serious plans with D3D in the future, then you may use 9.0c, why not. But if you really want to learn it and become quite good at it once, then starting with this old version will actually turn against you in the long run, because you will need to learn again and again from the start.

You'll get into 9.0c with FFP, you'll make your first simple testing applications or maybe simple games. Then you'll realise that you need shaders and you'll learn HLSL and all that. And then 9.0c will maybe really become dead (even deprecated by MS) and you'll have to learn DX11.

While if you start with DX11, you'll have a slower start, but you won't waste time later on learning something else.

 

In this sense, I kinda agree with the first post. But in general I don't agree with the title of the thread - because as I already said, existing D3D9 users don't have to be motivated enough to move to 11, if they are used to 9, know how to use it effectively, want their game to be as compatible as possible etc.






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS