A few questions about DX10 and other items

Started by
18 comments, last by MARS_999 15 years, 8 months ago
Well today GL died and DX won the battle most are saying now. So, I am now looking at maybe moving to DX10 or DX11, and I have heard that DX11 SDK will be out in Nov? Will the SDK run on DX10/10.1 hardware accelerated or in software mode? If I move to DX should I wait till DX11 comes out? Is DX10 coding going to carry over into DX11, or will DX11 be a complete overhaul like 9 to 10 was? What about a GUI library for DX10? What about Physx libs? I want something that is native to DX10, basically drop in and play? What about model loading or rendering? Does DX10 have a decent model loader like .x files under DX10? Is the DXUT or math libs still in DX10? I need some of these questions answered so I can make my decision soon, and what about ATI/Nvidia drivers for DX10 are all the features included as of now on both? Meaning if I code DX10 will it run on both without a headache? Thanks
Advertisement
Quote:Original post by MARS_999So, I am now looking at maybe moving to DX10 or DX11, and I have heard that DX11 SDK will be out in Nov? Will the SDK run on DX10/10.1 hardware accelerated or in software mode?


A techpreview will be out in November. Since D3D10 it has become a tradition to show the developers a techpreview first. While it will be mostly complete some minor changes can still happen. Direct3D 11 will run with Direct3D 10/10.1 in hardware mode you just can't use the new D3D11 features like the compute shaders.

Quote:Original post by MARS_999If I move to DX should I wait till DX11 comes out? Is DX10 coding going to carry over into DX11, or will DX11 be a complete overhaul like 9 to 10 was?


It will be mostly the same. Porting from 10 to 11 should be just a matter of some hours. Most of this could be done with a simple find/replace.

Quote:Original post by MARS_999What about a GUI library for DX10? What about Physx libs? I want something that is native to DX10, basically drop in and play?


I am not aware of a GUI lib but I am never actively searched for any as we use our own. I am not sure where you see problem with PhysX. The PhysX SDK may not contain a sample for Direct3D 10 but it is mostly the same workflow as with Direct3D 9

Quote:Original post by MARS_999What about model loading or rendering? Does DX10 have a decent model loader like .x files under DX10?


X Files are considered as dead. They have some loader code for their new SDK asset format. But in general writing an asset loader is very straight forward.

Quote:Original post by MARS_999Is the DXUT or math libs still in DX10?


Yes the DXUT is still part of the SDK and D3DX contains still the math libraries.

Quote:Original post by MARS_999I need some of these questions answered so I can make my decision soon, and what about ATI/Nvidia drivers for DX10 are all the features included as of now on both? Meaning if I code DX10 will it run on both without a headache?


Direct3D 10 requires that the hardware and the driver support the full techlevel. There are only some optional features left. In our case we run the exact same code on every Direct3D 10 hardware.
Im still using DX9 and I think ill continue to use it until XP totally dies out then I'll move to the most widespread supported api.
Currently DX9 is more than enough for what I'm doing.
Quote:Well today GL died
I briefly discussed OpenGL with Rob at GameFest last week and he mentioned there was an announcement due that week. I'm a bit out of the loop - what came up and why do you declare GL dead?

Ralf's covered your questions, but just to throw my 2-pence in... Go with D3D 10.0 and be happy, it can be stated that simply.

The only case I'd suggest you hold off for D3D11 is if you want to go for a massively parallel architecture or want to port some old X360 native code over. The architectural changes with 11 allow for a very different design that can be quite tricky to implement on 10.x and older API's. The stuff for free-threaded resource creation and immediate/deferred display lists is powerful.

As an aside, I was also discussing with Rob and Richard last week about my thoughts that traditional frame-based designs will be rapidly going the way of the dodo in this multi-threaded world. But thats a whole other discussion [grin]

Quote:Does DX10 have a decent model loader like .x files under DX10?
There are ID3DX10Mesh objects that map reasonably well to legacy formats but there is no .X support nor any mesh manipulation functions. However you can still do all your mesh work with D3DX9 and a NULLREF device then just copy the ID3DXMesh to a ID3DX10Mesh for rendering. I've posted the code for this a few times but its not too hard to figure out for yourself [wink]

hth
Jack

<hr align="left" width="25%" />
Jack Hoxley <small>[</small><small> Forum FAQ | Revised FAQ | MVP Profile | Developer Journal ]</small>

Quote:Original post by jollyjeffers
Quote:Well today GL died
I briefly discussed OpenGL with Rob at GameFest last week and he mentioned there was an announcement due that week. I'm a bit out of the loop - what came up and why do you declare GL dead?
Ok, I shouldn't be so lazy!

Interesting thread to read and Oluseyi's comments about GL having other huge markets to cater for is a good one. Leading the GL community on was bad form, but maybe games just aren't that important to them when compared with multi-billion dollar CAD industries...?

Jack

<hr align="left" width="25%" />
Jack Hoxley <small>[</small><small> Forum FAQ | Revised FAQ | MVP Profile | Developer Journal ]</small>

Quote:Original post by jollyjeffers
Quote:Original post by jollyjeffers
Quote:Well today GL died
I briefly discussed OpenGL with Rob at GameFest last week and he mentioned there was an announcement due that week. I'm a bit out of the loop - what came up and why do you declare GL dead?
Ok, I shouldn't be so lazy!

Interesting thread to read and Oluseyi's comments about GL having other huge markets to cater for is a good one. Leading the GL community on was bad form, but maybe games just aren't that important to them when compared with multi-billion dollar CAD industries...?

Jack


Hi Jack, the multi-billion dollar industry is fine, but games as a whole is many many times larger than they are, if everyone used GL vs. DX for games CAD would be a very small part as a whole. GL probably isn't dead, but sure feels like it when most people are talking about leaving it...

What are you saying about DX11? Will DX11 be different to code for than Dx10?
Quote:Original post by MARS_999
Hi Jack, the multi-billion dollar industry is fine, but games as a whole is many many times larger than they are, if everyone used GL vs. DX for games CAD would be a very small part as a whole. GL probably isn't dead, but sure feels like it when most people are talking about leaving it...
I'm not well versed on the size (customers/companies/revenue) of the CAD and dependent industries so I don't know how it compares. I was just commenting that Oluseyi seemed to have raised a good point that one distinct interpretation of this is that the ARB/Khronos group bent to keep certain camp(s) happy and that gaming may well not have been their interest.

Quote:Original post by MARS_999
What are you saying about DX11? Will DX11 be different to code for than Dx10?
As Ralf commented the actual code changes for D3D11 are pretty reasonable from a 10.0/10.1 perspective and if you're familiar with 10 you'll be fine with 11.

What I was getting at is the architectural possibilities. A big part of the D3D11 design is to better support multi-threading, something that isn't such a great story under D3D10 or D3D9.

Designing a "traditonal" D3D9/D3D10 renderer and then porting it up to D3D11 is perfectly fine. But if you were to go straight for D3D11 (which can support down-level hardware) then you have more options w.r.t. the design and architecture of your code - you can do more interesting and more powerful things with multi-threading.

If you want to get rolling straight away then stick with the traditional approach and go for D3D10. I would imagine you need to be at the bleeding edge with a pretty large and complex engine (inc. non graphics parts) to really see any ROI on a massively multi-threaded next-gen engine right now [smile]

hth
Jack

<hr align="left" width="25%" />
Jack Hoxley <small>[</small><small> Forum FAQ | Revised FAQ | MVP Profile | Developer Journal ]</small>

One last question, maybe Jack can answer it, with DX11 they are talking about Multi-core CPUs being utilized better, so what do they mean by this? Would I be better off with a quad core vs. a dual core for DX11? Thanks
This depends on your software. The multi core support for Direct3D 11 is not a feature that works automatic without special code. Direct3D 11 allows you to fill multiple “display list” at the same time on different threads. Finely you can send all this lists in the right order to the GPU for rendering. The advantage by doing this is that most CPU work will be already done by the threads that fill the display list.

If your software can fill four list parallel you can be faster with a quad core. But you need to be CPU limited and not GPU limited.
Right now, with D3D9 and 10, there is very limited support for mutlithreading and doing things like resource creation or issuing drawing commands.

You pretty much have two choices;
1) don't do it. All drawing and resource creation/uploads take place in the main rendering thread the device was created in (like how a GL context is dealt with), just using other threads to decompress the data.

2) create a multi-threaded device which lets you do things from multiple threads at once but involves all manner of criticalsection locks which hurt performance.

With DX11 the landscape changes in that you'll be able to create resources from any thread and there are 'deferred' contexts which are used for constructing display lists which can then be executed from the main context.

Jack, Superpig and myself go into various levels of detail about this in our XNA Gamefest write ups in the journal section.

As for performance, it's less about DX11 and your cores and more about how the games as a whole are designed, DX11 just removes the cluggyness from dealing with multithreading.

This topic is closed to new replies.

Advertisement