I have a little time on my hands at present and i'm quite keen to get into some DirectX programming so i can start to code some simple games.
To give you an idea of my programming experience, i've just finished a combined degree in Computing Science & Mathematics and i've done a few months worth of software engineering work for a company. I'm in my summer break at present before returning to study for a Masters degree.
My most comfortable language is Java but I also know C and Ada, My experience with C++ is limited to a few very simple programs such as a draughts game where i used GUI buttons to form a 'board' of sorts. However I'm hoping my maths background and experience with Java and C will prove sufficient.
I've started going through the tutorials at directxtutorial.com and just wondered if this is an appropriate and good enough resource and whether it is important for me to spend more time with C++ first?
I'm aware games programming is considered rather demanding so thought it best to ask the opinion of others who have much more games programming experience than myself.
Apologies for the length of this post but many thanks to anybody willing to supply advice :-).
If you have a solid math background and want to use the GPU for university projects too, I would consider learning OpenGL instead. You can use it for games as well, but for academic purposes I've never seen someone use DirectX (e.g., Nvidias Tesla servers, consisting of 4 GPUs and having a total of 2TFlops, only run on Linux. And that's the kind of HW you can "research" projects on...).
Also, don't get too excited about the actual API, it's a mere toolset you have to know, but the functions contained can be learned within two weeks or so. For the graphic component of real-time interactive 3D applications (such as games) your math is going to come in handy, but you will need a solid foundation in some specialized data structures as well - 90% of that task is "optimization", not on the source level (only), but on the algorithm and DS level. Before you can judge the usefulnes of a given API for you, you should have some basic background knowledge on how the rendering process works, and what things like a "scenegraphs" are. You also might want to familiarize yourself with computational geometry.
A "standard" work on real-time rendering is, although becoming a bit old by now, the book "Real-Time Rendering" by Möller & Haines. The book "Computational Geometry" by Schwarzkopf et al is quite basic, but coveres most of the underlying ideas on the topic.
These are "theoretical" books, usable for all APIs and plattforms. Some "practical" books:
For OpenGL, the "OpenGL Programming Guide" and "-Reference Manual" (and perhaps "-Shading Language") suffice, though for some advanced techniques Nvidias "GPU Gems 2" is pretty nifty, it also introduces to GPGPU (General Purpose Computations on the GPU), the idea behind the Tesla servers and alike.
Use an open source engine instead of trying to re-invent the wheel from scratch. It will save you many hundreds of hours you'd spend writing simple things like Texture Handlers, Multi-Texturing, Keyboard Input, Camera etc.