Jump to content
  • Advertisement
Sign in to follow this  
BlackWind

DX 9 vs DX 10 vs DX 11 in education

This topic is 2993 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,

Well, my question is:
Should a graphics programming course with directX be using directx11 or directx10 instead of directx9? (assuming that every student comply the hardware requirements)

Would it really be a difference for educational purpose? Why?

Should everyone stop learning dx9 if the have the possibility to learn dx10 or 11?

thanks a lot.

Share this post


Link to post
Share on other sites
Advertisement
If you want to teach the shader way of 3D programming the differences aren’t that big. But 10/11 has the advantage that it has removed the old fixed function stuff. Therefore people are forced to do it the right way.

DX9 is still in use but if someone wants a job in the business learning multiple more or less different 3D APIs is mandatory. But in education people should better learn the concepts behind and not just an API. This way it would be easy to jump to another API.

Share this post


Link to post
Share on other sites
I agree with Demirug there. Another feature worth to notice is that DX11 has this thing called Feature levels.

You can specify your DX11 device to use the 9_3 feature set. With that you tell the device that the targeted hardware only supports DirectX 9.3 (also known as DirectX 9c).

Now you can use the clean API of DX11 writing a DX9 application.

Share this post


Link to post
Share on other sites
The problem with DX10 and 11 is that they don't work on Windows XP and WINE. Most people still have XP today, and even more don't have DX10 capable hardware.

As an alternative, you could use OpenGL 3.3/4.0 instead, then you have the same features as DX10/11 on Windows XP/WINE/Mac/Linux/etc also. Hardware tesselation was in OpenGL 1.2 already, but not in DirectX before 11.

Share this post


Link to post
Share on other sites
Most graphics programming concepts trancend any particular API - you could probably use a software rasterizer and still learn a lot of material that is applicable to DirectX/OpenGL ;)
Quote:
Original post by Lumooja
As an alternative, you could use OpenGL 3.3/4.0 instead, then you have the same features as DX10/11 on Windows XP/WINE/Mac/Linux/etc also. Hardware tesselation was in OpenGL 1.2 already, but not in DirectX before 11.
I agree with the sentiment that the more portable option is a good choice for education, but your statement about tesselation is misleading - that's a completely different type of tesselation (also, dx9 also has yet another form of tesselation via extensions that is different to GL/dx11).

Share this post


Link to post
Share on other sites
Thanks a lot for your answers.


Quote:
Original post by Xeile
I agree with Demirug there. Another feature worth to notice is that DX11 has this thing called Feature levels.

You can specify your DX11 device to use the 9_3 feature set. With that you tell the device that the targeted hardware only supports DirectX 9.3 (also known as DirectX 9c).

Now you can use the clean API of DX11 writing a DX9 application.



Thats very nice.
So in conclusion, if they have the hardware, DX11 its the "best" option (among the dx versions)

Share this post


Link to post
Share on other sites
Quote:
Original post by BlackWind
So in conclusion, if they have the hardware, DX11 its the "best" option (among the dx versions)


No, hardware isn't the limiting factor. As he said DX11 runs on all DX9/10/11 graphics cards. The requirement is, that you need Windows Vista or Windows 7. XP is not supported.

If you can't drop XP support, go for DX9. Otherwise DX11 is the best choice. (DX10 is completely obsolete since DX11 release.)

Share this post


Link to post
Share on other sites
Quote:
Original post by Lumooja
The problem with DX10 and 11 is that they don't work on Windows XP and WINE. Most people still have XP today, and even more don't have DX10 capable hardware.


I'm going to have to disagree here to an extent because it depends very firmly on what your target market share is.

The two "best" sources of information are the Steam hardware survey and Unity3D's Web Player Hardware stats.

The former shows that 61.9% of Steam users now have DX11 compatible systems (with ~56% having DX10 hardware) and that the combined market share of Win7+Vista is 59.48% with XP only having 33.55% and dropping.

This picture does change slightly when you look at the mobile stats with Unity, where XP still holds 57.7% of the market to the combined Win7+Vista grab of 39.1% BUT that XP percentage can only fall at this point as more people move over to Win7 from XP.

Quote:

As an alternative, you could use OpenGL 3.3/4.0 instead, then you have the same features as DX10/11 on Windows XP/WINE/Mac/Linux/etc also. Hardware tesselation was in OpenGL 1.2 already, but not in DirectX before 11.


Frankly, this isn't a good choice.
Fristly, when compared to DX11's API the OpenGL API is so outdated and painful its unreal.

So, while you could use OpenGL to grab this market share the hard truth of the matter is; there isn't really a great deal of market share to gain.

The Unity stats show OSX at 2.9% and the Steam survey puts OSX around 6.3% and doing crossplatform development is a non-trivial operation.

Also, as others have pointed out, hardware tesselation was NOT in OpenGL at 1.2; there was some software solutions in a utility library but that was about it. For some time now OpenGL has lagged, and continues to do so, behind DX. Be it in features or general usability of the API.

Frankly, the only reason to use OpenGL is because you HAVE to use it. Be it because you are on OSX, Linux or have this crazy idea to crosplatform develop.

However, when it comes to teaching the important thing isn't the API its the fundamentals of 3D rendering which is important and, right now, because the two D3D11 is a better platform to present that because the API is cleaner, modern, exposes the features consistantly and doesn't have any pre-shader legacy hiding around to trip people up.

Share this post


Link to post
Share on other sites
Saying that DX10 is obsolete does not give a good picture of the situation. 99% of the API in DX11 is directly from DX10, We've just replaced the '10' with the number '11' in the API. So, the concepts are the same, though the API calls are different. If a school chose to pick DX10 as their primary real time graphics library of choice for student projects it wouldn't be a waste of time.

The argument about DX10 hardware not being available does not hold water if in the same sentence it is suggested to use opengl 3.0+. If you don't have the hardware to run the features, then it's not going to work regardless of the API of choice. Besides that DX hardware is quite prolific now and growing.

It is true that Windows XP prevents DirectX10 + API's from being used due to a change in the driver model. For educational purposes, especially at the college level, this doesn't seem like a real issue. University labs should certainly have fully DX10 capable systems by now - which would mean that projects could be coded for DX10, DX11, and opengl. Student projects are not likely to need to support any DX9 hardware.

Looking at the future one really needs to decide how they want to spend their educational time. I don't think that dx9 hardware is being made for anything other than mobile devices at this point. If you want to do mobile devices than DX9 or older equivalent opengl languages are still useful.

If you want to write games then I would also argue that going into a 4 year compute science program that DX11 would be the way to go. The gaming systems are only going to advance further while your earning your degree - DX11 will let you target dx9 hardware, and by anyone's guess, in 4 years the number of XP machines is going to be going the way of the dodo. They're already in decline as it is. That opens the door for PC and XBox development. PS3 uses some custom variation of opengl - you won't learn this in schools any time soon. Same with Nintendo. Infact few schools probably even have the dev machines available for you to even try.

If you're doing scientific computing, or medical imaging, these areas often rely on linux systems and so are therefore restricted to using opengl. Though there are also many companies using windows. That leaves the options to DirectCompute (dx10/11), CUDA, and opencl. Often these companies get to dictated what hardware and software a customer will be using to run their applications.

Opengl will always have driver issues since there's no braud initiative to comprehensive testing for it. The library files are provided by IHV's and accessing the extensions often requires third party helper tools to load them all. Gathering all of the parts when you're starting out is furstrating and a huge waste of time. You're supposed to be learning graphics and doing assignments, not spending hours trying to find out why extension X isn't available or isn't supported, or why you can't link, or why your ap doesn't run on some other IHV's system. I've experienced all of these issues. The Opengl API's are also muddy with legacy code paths just like dx9. I know that opengl tries to deprecate these things and move forward, but they also canned their attempt to refresh the API. Invocation here lags behind directx. Of course all dx features are available in opengl as they are shew in's being exposed because of new hardware abilities -- not because the opengl board actually drove the new features.

Older tessellation in opengl is based on extensions, it's not as comprehensive or as feature filled, and also not widely supported. For educational purposes (unless the education is on the historical) it seems like a waste of time to even mention that. DX11 tessellation is the standard.

DX11 provides backward compatibility with hardware, it has a flexible and consistent shader pipeline with each stage being programmable. It is maintained with updates released on a consistent schedule. All the files you need come in one down-loadable SDK. It can allow students to write shaders and focus on graphics concepts with less confusion than other older API's.

[Edited by - DieterVW on July 16, 2010 3:13:10 PM]

Share this post


Link to post
Share on other sites
I tend to agree with Dieter's assessment: for education DX let's you get right into doing the good stuff without having to wade through layers of bullshit and external libraries. Support libraries can be huge when you're just starting out...I mean when you just want to load some JPEG image as a texture it can be a serious hassle going through external libs and getting the data into the proper formats. But with D3DX you just call a single function and you're done. There's also math support, Effects, and even DXUT. Even if they have a few issues, they all come in the same package and are all documented in the same place (except for DXUT).

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!