Direct X 11 really worth it?

Started by
25 comments, last by MJP 10 years, 3 months ago

Not to hijack the thread, but what are the benefits of using D3D11 over D3D10?

All I've seen is the Device.Context, which supposedly makes multithreading easier for games. But I'm already using multithreaded loading and running my gameloop in a separate thread than the main one (using D3D10), so not sure how the device context would improve my architecture...

Here you can find the list of main features of d3d11 over d3d10.x: http://msdn.microsoft.com/en-us/library/ff476342.aspx

And here something about DXGI: http://msdn.microsoft.com/en-us/library/bb205075.aspx

"Recursion is the first step towards madness." - "Skegg?ld, Skálm?ld, Skildir ro Klofnir!"
Direct3D 12 quick reference: https://github.com/alessiot89/D3D12QuickRef/
Advertisement

If you are going to make an engine, then I would say at some point you've just got to saw "screw it" and start making the game using whatever technology and API's you're comfortable with.


Make a game using seperate libraries without an engine. In the end, you've got a sorta good engine, tweak it a bit more and you've got an engine that does what you want, the way you want and free (depending . . .) and it'll be suited for all your games after making it (depending . . . ) :)

UNREAL ENGINE 4:
Total LOC: ~3M Lines
Total Languages: ~32

--
GREAT QUOTES:
I can do ALL things through Christ - Jesus Christ
--
Logic will get you from A-Z, imagination gets you everywhere - Albert Einstein
--
The problems of the world cannot be solved by skeptics or cynics whose horizons are limited by the obvious realities. - John F. Kennedy

Not to hijack the thread, but what are the benefits of using D3D11 over D3D10?

All I've seen is the Device.Context, which supposedly makes multithreading easier for games. But I'm already using multithreaded loading and running my gameloop in a separate thread than the main one (using D3D10), so not sure how the device context would improve my architecture...

Here you can find the list of main features of d3d11 over d3d10.x: http://msdn.microsoft.com/en-us/library/ff476342.aspx

And here something about DXGI: http://msdn.microsoft.com/en-us/library/bb205075.aspx

Just adding to this: it may seem as though unless you're using 11-specific features you'd be as well off with 10, but that's not really the case.

All D3D10 class hardware is capable of supporting D3D11 (with at least D3D_FEATURE_LEVEL_10_0), so there's actually no valid reason to prefer 10. By using 11 from the outset you are better positioned to move up to 11 in the future, or to drop in 11-level features for higher quality rendering modes, and with minimal code disruption.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

Just adding to this: it may seem as though unless you're using 11-specific features you'd be as well off with 10, but that's not really the case.

All D3D10 class hardware is capable of supporting D3D11 (with at least D3D_FEATURE_LEVEL_10_0), so there's actually no valid reason to prefer 10. By using 11 from the outset you are better positioned to move up to 11 in the future, or to drop in 11-level features for higher quality rendering modes, and with minimal code disruption.

...Gah?

Never seen mention of this anywhere for the past month+ I've working on this. Either my reading comprehension is seriously lacking or such an elementary fact is practically hidden. Anyway, now I finally know why I kept finding D3D9 and D3D11 tutorials and almost none for D3D10....

Thank you, and I'll make the switch to D3D11 right away. Btw, the differences seem to be:

1) As mentioned, the introduction of the device.Context.

2) No more effects, need to compile Vertex, Pixel etc.. shaders separately. And thus instead of effectvariables I need to use constant buffers.

3) No D3D10 font/Sprite. Don't care, using my own classes already.

And, finally, If I want D3D10 harware to run my game, I just need to make sure I respect these limits: http://msdn.microsoft.com/en-us/library/bb509540.aspx

I think that's about it...

Yes, I forgot to link feature_levels http://msdn.microsoft.com/en-us/library/ff476872.aspx

"Recursion is the first step towards madness." - "Skegg?ld, Skálm?ld, Skildir ro Klofnir!"
Direct3D 12 quick reference: https://github.com/alessiot89/D3D12QuickRef/

Yes, I forgot to link feature_levels http://msdn.microsoft.com/en-us/library/ff476872.aspx

Cool, thanks. Heh, I could even support D3D9 hardware in a game written with D3D11!

Yes, I forgot to link feature_levels http://msdn.microsoft.com/en-us/library/ff476872.aspx

Cool, thanks. Heh, I could even support D3D9 hardware in a game written with D3D11!

You can, but you should be aware that D3D11 doesn't expose the full D3D9 feature set for those GPU's .Notably instancing and a lot of the SM3.0-specific functionality isn't exposed, which can make it awkward to work with.

Also regarding effects with D3D11...Microsoft gave out the source code for the DX11 version of the effects framework so it is possible to compile it yourself and use it. However I'll point out that the paradigm you've mentioned of setting individual effects variables isn't very efficient, since under the hood it has to convert everything to constant buffers anyway. So if you're looking to push performance, you'll want to use constant buffers directly.

This topic is closed to new replies.

Advertisement