   Do I have to learn all the DirectX functions ?
  I have just started DirectX programming out of curiosity, and I plan to make games in DirectX as a hobby. I am not a beginner in C++ though, but I also dont know much about windows programming. I have looked through several tutorials on DirectX on the web, and they are not extremely difficult to follow to say the least, but the only problem is that I get quite intimadated by the amount and the wierdness of names of functions and their parameters. I can understand what a function does, and what its parameters are for, upon reading, but the question is - - Do I have to learn all this ?? I mean do I have to learn the function names and what parameters they take, to use in my code..?? (No other option ??)Also, is there some IDE that can suggest you names of functions and their parameters when you write the first two letters of it, etc. (similar to how netbeans is for JAVA....), that would be very helpful in such a situation....I am using MS visual Studio Express Edition(the one free on the internet..)And one more thing. What is XNA ? I looked it up on Google, but didnt quite understand it. Is it another API like DirectX or some IDE for DirectX or something else ???Any help is appreciated !!   
  I believe there is something called Intellisense that gives you suggestions like you said ;] So you might want to try that.   ;  You don't have to learn all this, no.As boogeyman19946 lightly pointed out, Visual Studio has this autocomplete function in C++. It should pop up automaticly, if it does not, you might have to clear the intellisense database (delete .ncb file) The intellisense feature was very buggy in C++ 2008 where it would almost never show autocomplete for newly included libraries, without clearing the database and restarting the environment. This should be fixed in 2010 where the entire intellisense parsing has been rewritten as far as I know, so if you are using Visual C++ Expres 2008, it is recommended that you upgrade. There are also alternatives to Visual C++, such as Code::Blocks which I personally find to be a very good IDE.XNA is a game development API which is based on DirectX. It is supported by Windows, Xbox 360 and Zune HD (only 2D sprites though on Zune)It uses Visual C# as a programming language (which is very similar to Java) and Visual C#'s intellisense works a lot better than in Visual C++ (probably because C++ is a lot more complicated to parse than C#, and because C++ does not natively support metadata as the .NET programming languages does) You can also use other languages for XNA, such as F#, Visual Basic and IronPython, but all code examples etc. are written for C# since this is the primary language for .NET, which is more or less the "standard" language for .NET for a number of reasons. C# if you don't know, is kind of Java on steroids. It works in mostly the same way, but implements a lot of features which are lacking in java (such as unsigned datatypes, primitive structures, operator overloading, lambda expressions and delegates)XNA works well for game development, as a lot of work has been done for you (there is for example support for Autodesk .FBX Collada, which is quite usefull)   ;  Thanks a lot for the answers GeirGrusom and boogyman19946.. :)It is seriously very encouraging to know that I dont have to learn all this, even thinking about learning so much was bogging me down...Good to know about Intellisense, I now remember I read about it somewhere, but I never really used it. I've gotta upgrade to MS VS 2010, and check out the Intellisense...btw, GeirGrusom does Code::Blocks have something like Intellisense ? I somehow find MS VS rather complicated for my simple usage...and would prefer some other IDE, something simple as DevCpp (with Intellisense equivalent)...Also, thanks for telling me about XNA. You say its for "game development" ? Is that some other "phase" of making games ? (Like "game programming") I mean, I just wanted to know if XNA would be of any use/help to me now (in the beginning stage)...though i think it will not...(though I know Autodesk Maya)Thanks for your answers once again !! ;Quote:Original post by hypernovaAlso, thanks for telling me about XNA. You say its for "game development" ? Is that some other "phase" of making games ? (Like "game programming") I mean, I just wanted to know if XNA would be of any use/help to me now (in the beginning stage)...though i think it will not...(though I know Autodesk Maya)Not sure what you mean by this. XNA is (AFAIK, never used it myself) a kind of managed wrapper over native DirectX code. It allows you to do the same types of things as DirectX, but in a managed environment (C#). Maya, on the other hand, is a 3D modeling program.   ;  If you abstract the rendering code then it turns out that very little of your code will be the graphics API you use.  So don't worry about a bunch of functions littered around your code that you forget what they do.   ;  I've also started using DirectX (9.0c) I read a book about it, I examined all the example source code, played with it and stuff, but I can't remember that stuff.But that doesn't matter, because you can look it up when you need to, and after writing a few apps using DirectX yourself, you will remember them...As for autocomplete... I don't really like the autocomplete of VS2010 either, It just doesn't show up as fast as I would like.But there are plugins for visual studio which enhance Intellisense. They do slow down the IDE a bit, but if you have a fast pc, you won't notice that much.Anyway, I'm using visual assist x, think there is a trial version on their website.Hope this helps :)Tigran   ;  The thing with DirectX / D3DX functions is that they tend to follow a convention in their naming.If you understand what you really are doing, "guessing" the name of the helper function should not really be an issue.D3DXMatrixMultiply(D3DXMatrixIdentity(D3DXMatrixRotationZ(D3DXMatrixRotationY(...And so it goes.At this point, the intellisense kicks in to remind you of parameters.As with the device, those calls tend to be relatively few in number.Just caps querying in DX9 ( Didn't they kill that in x10?), device state setting and alike.Its really just a matter of deciding what you want to do, and seeing the logic behind the naming. Of course, every once in a while google is a good friend on this matter.Oh, and there is of course an option to write your own vectors, matrices, math and util functions. Creating them can give you more insight into how things really work and after you are done with them, remembering them should be simple.[ Something wrong with either my keyboard, or spelling ][Edited by - rmed002 on May 23, 2010 9:52:22 PM];  Code::Blocks has some intellisensy stuff too. Keep in mind though that Code::Blocks was designed as a C++ IDE, and does not provide intellisense for other languages (at least last time I used it) but seeing as you use Visual C++ Express that won't change much :)The downside of Code::Blocks is that it isn't really designed with Windows in mind... or it is, but the latest releases are only available through SVN, shich can be somewhat cumbersome. I only use it on Linux since Visual Studio is not available there.When it comes to XNA, it is a game programming API layer built on top of DirectX. It has classes such as the Game class which controls game flow, logic and rendering. It is also managed, and as such is somewhat simpler to use. XNA is not related to Managed DirectX, which has become more or less obsolete. Most of the job of putting stuff together is done for you, at least regarding graphics and audio. What you have to do, is build the game logic, and whatever rendering techniques your game requires. You don't have to think about dataformat support, building material classes, skeletal animation etc. all this is done fore you.XNA uses DirectX 9.0c as far as I know. I think there is a newer version (4.0) for Windows PC around the corner, since they made a 4.0 which was exclusive to Microsoft Phone (or something in that area)There is also something called Microsoft Gamestudio, which is some kind of IDE exclusively for XNA, but I have not tested it.   