Does microsoft restrict our possibilities?

Started by
14 comments, last by bluntman 15 years, 4 months ago
Yes, that's the point: Does Microsoft restrict our possibilities as game programmers? I had wondered this question several times before, but I cannot get an answer. Everybody knows that DirectX9 programs needs an OBJECT, and a DEVICE. Once defined your object, you MUST initialize it, with the line:
pD3D = Direct3DCreate9( D3D_SDK_VERSION );
This line initializes our Direct3D object, and in between brackets, you MUST type "D3D_SDK_VERSION". That generates lots of question, but the main one is: "If there is a SDK VERSION, why not a COMMERCIAL VERSION only Microsoft can use?" I think it exists, so, in some way, we can say we are restricted by the SDK VERSION. What's your opinion? is there any commercial version? Does other company games use DirectX9 SDK VERSION? Finally, I would like to say that I am neither american nor british person, I am just from Spanish, and I am an English student. Thank you all, and sorry my English. Looking forward to hear about you, Skinner [Edited by - darkcube on December 6, 2008 1:28:02 PM]
Advertisement
Quote:Original post by darkcube
I think it exists
Why? What purpose would be served by Microsoft keeping game developers from making full use of its SDK?
Are you mad? You think Microsoft has a super-advanced 'special' version of DirectX that they reserve for themselves? That would be an absolutely terrible idea, and I'm sure you'd see why if you thought about it for a while.
Would be cool though :p

MS are just drip feeding us when in reality they have the technology to make games so immersive you can actually see that Lara Croft wears a padded bra :p Don't know where that last bit came from; weird mood today, my development PC is broke :|
Innovation not reiterationIf at any point I look as if I know what I'm doing don't worry it was probably an accident.
I wish I could say this is the most stunningly idiotic thread I've ever seen on GameDev, but I'm pretty sure it doesn't even make the top 25.
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
Promit: be nice. Guthur: be normal.
No, I'm sorry to say your conspiracy theory doesn't hold up.

You initialize the Direct3D system with D3D_SDK_VERSION, which is a macro defined in a direct3d header that you #include. It's just a number, representing which version of Direct3D you are compiling with.

Now when this line compiles, your exe file will always initialize Direct3D with that version number. If you copy the exe file to a system with a newer version of Direct3D, your exe file will use the new DirectX DLL, but will call that create function with the older version number. The new DirectX will know to use the old version's syntax.

Let me see if I can reword this... Let's suppose you've installed DirectX 9.0 on your computer along with your C++ compiler. You write your program with that line and compile. DirectX 9.0 has defined D3D_SDK_VERSION to be some number, let's say 900 (just for this example - this is not the real number). So the compiler writes in the EXE file, "dynamically link with whatever DirectX DLL is on the system" and then tells that DLL, "Direct3DCreate9( 900 );".

So if you move this EXE to a system with a newer DirectX version, 9.1, then it will be using a new DLL with different functions and such. But the program will use that DLL and give it that version number "900" and the DLL knows to pretend like it's actually a version 9.0 DLL.

So, in essence, it's to preserve backwards compatibility. It tells the DLL which version you compiled with, so that any new changed features will still work in the old ways as they were at the time of compilation.

Does that make sense? :)
~Ricket
Quote:Original post by hymerman
Are you mad? You think Microsoft has a super-advanced 'special' version of DirectX that they reserve for themselves? That would be an absolutely terrible idea, and I'm sure you'd see why if you thought about it for a while.


Not for themselves, but for selected companies whose games would run faster if they would pay more to get better version :)
Quote:Original post by Sneftel
Guthur: be normal.


Roger that :) If i can bury my head in code again sometime soon people tend to not notice the odd idiosyncratic comment :p Anyway just finished downloading FX Composer, going to play with that for a bit.
Innovation not reiterationIf at any point I look as if I know what I'm doing don't worry it was probably an accident.
It is there as a compile-time constant to mark what version of directX the code was compiled against, while also allowing the same code to be compiled against future versions of the sdk. Actually, I'd greatly prefer this over developers having to actually dig up and explicitly say what precise version it is that they are working with. This way, it is always filled in for you, yet in a way explicitly stated so you don't have to go wading through various D3D releases to find out what is the version you want. This way, it just works.

It is not a super secret version of directx that is somewhow super duper powerful compared to your vanilla directX. Microsoft is not restringing your capacity to program by requiring you to actually say what version of the sdk you are using.

Yeah, this is a pretty absurd concept.

Actually, I'd say you owe microsoft for your game dev capacity, as right now they are using their girth to push technology forward in this respect, with the hardware community breaking their own backs in an attempt to keep up with bleeding edge specs like DirectX10 when it first came out. Microsoft goes through great effort at great expense to keep windows and transitively the PC in general as the absolutely high power gaming platform out there. Microsoft is big enough to say what goes, and they do it on your behalf, so that you can write a program on their technology, and take it anywhere and have it Just Work.

This topic is closed to new replies.

Advertisement