Jump to content
  • Advertisement
Sign in to follow this  
darkcube

Does microsoft restrict our possibilities?

This topic is 3600 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

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]

Share this post


Link to post
Share on other sites
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?

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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 :|

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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 :)

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

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!