I've been learning from a book titled Tricks of the Windows Game Programming Gurus by Andre' Lamothe. It's outdated using DirectX 7.0a SDK, and I believe his second volume creates software rasterization with DirectX 8.0 SDK. I really enjoy his books because it is very in depth and low leveled. My question is should I continue reading it if I'm geared on becoming a professional in graphics Since 60% of our life is maintaining and upgrading previous games/multimedia, especially MMORPG games that have a long life, you'd be working with older SDK versions, no matter if it's DirectX or not. The idea is to learn this now and migrate over to DirectX 9c. A message board called GameDev.NET seem to disagree, but them being a young age, I don't see a reason to listen to them. Personally, I don't think they live in the real world. I guess I need to know if I'm right on this
Phil

I need some spiritual DirectX guidance.
chogye
The general technology used by games is very fluid and tends to move much faster than most printing presses do - so reading as many books as possible as well as corresponding web articles, and then making an informed choice is usually the best route.
Book like Foley et.al. and Moller and Haines will probably last a while, but even the ShaderX, GPU Gems and Game Programming Gems books have a relatively limited shelf-life if you have any intentions of matching the cutting edge...
hth
Jack
t43
While it's always a good thing to wrap your head around the latest emerging technologies. On a side note: many professional game dev companies use last year's technology. The main reason being: at least all the bugs are known.
eg. EA may still be making games using C++, but a lot of the new game prototypes are done in C# now.
BigTuna99
Yes, you get some immature discussions/questions. It happens on every public forum, but overall, there's a TON of great information and very helpful people on GameDev.net.
Eureuka
This is indeed another topic, probably best discussed elsewhere. David gave a good answer to this above - I agree with what he said. I think the important bottom-line to it is that no one forces you to visit GDNet nor is it the only place you'll get help/whatever - if you don't like the place don't visit
If you want to answer your question about it being professional, try browsing the profiles of the top-50 users (or other regulars), you'll see that quite a few of them work professionally in a variety of related industries.
Cheers,
Jack
knreddy
ps. Why do you think GDNet is a professional board Sure, I get some help there, but the majority of developers are in the age range of 14-25. Personally, it gets a little irritating after a while, although helpful to beginners in the programming world, but definitely not a suitable place for real-world information. Anyway, this is another topic for another time.
Brandon Williams
Voast Dev
littletiger
Carsten Thielepape
common
Okay, thanks for the insight and link. I guess I needed to hear it from another source, although I am interested in reading Andre's books still since software rasterization is quite interesting to me. I'll go ahead and buy the book tomarrow morning. Thanks!
ps. Last time I heard, DX 9 doesn't work on VC++ 6.0. I just have this IDE, though. The book says I need either 6.0 or 7.0, so I'm confused that 6.0 does work now
Shyju
The Language
Choose a language that best suites you and a decent compiler. Most game/graphics developers choose c++ and DirectX/OpenGL. This is obviously very flexible and a variety of languages are available for the use in DirectX such as C#/VB6/VB.NET, etc...
The API
I would say the learning DirectX really is very simple and even simpler if you are using the managed directx api. It's clean and straight to the point.
DirectX also has a good background and through a number of revisions it's become a very concise/clear/readable API. The Documentation is also very well layed out and samples/starter guides are included
The Learning Phase
I would like to add that learning an API is a good start but getting a good grip on graphics theory and mathematics related to 3d programming is essential. The world of graphics programming is moving to shaders and a fundamental base of matrices and vectors are very important when working with shaders since you'll be transforming vertices to spaces and back and working with objects in different spaces.
You can then set some projects for yourself. Don't aim too high but get something to render and play with the possiblities of what you can do.
Step 1
Get a window up and running and initialize Direct3D.
This will help you get some good understanding on what the device is and how it's used. You will pass your window's handle to the creation function. So it links the window with the device. You will also understand how windows messages are handled and a good grounding on render loops
Learning Objectives.
- Window messages
- Render Loops
- Direct3D Device
Step 2
Render a colored triangle
Through this you will learn about vertex formats and what they are. How they are used and how they are setup. You will also learn about winding orders such as clockwise/counter clockwise and how they are culled. Which just means that they don't get rendered if you have a clockwise winding order and you specify to cull clockwise created primitives.
You will also learn about vertex streams and vertex buffers.
Vertex buffer being a direct3d enhanced buffer that stores your vertices.
Also you will come in contact with some primitive types and how they are formed such as TriangleStrips, TriangleLists, PointLists, LineLists.
You will also learn how vertices are transformed through matrices and that every primitive might have it's own matrix that places it in the world.
Transformations also needed to be taken into consideration here or you may decide to skip it for future learning.
Learning Objectives.
- Vertex Formats
- Transformation Matrices
- Coloring
- Primitive Types
Step 3
Render a textured Quad
Coming to textured primitives, you will learn what texture coordinates are and how to load resources from a disk. This will further enhance your understanding of vertex formats and how Direct3D helps you place a texture unto a primitive.
Also you will further learn how primitives are stiched together to form larger primitives as you will have rendered 2 primitives to form a quad.
Step 4
Render a lit and textured Quad
Moving to light you will learn how different lights interact with different objects through normals and materials.
Normals being the key point in this step. Lights give the scene a more realistic feel by adding more depth to your objects. You will learn about materials and how lights interact with different materials.
Learning Objectives.
- Lights
- Materials
- Normals
Step 5
Translating (moving)/ Rotating objects
Moving objects in a scene is a very important aspect to getting a game up and running since you want objects to move. Matrices form a big part of this. You will learn about different spaces such as object/world/view/projection space.
You might also add some additional learning to this section with regards to frame rate independent movement. This will be important when programming your games for different spec machines.
Learning Objectives.
- Matrices
- Spaces
- Timers
Step 6
Meshes
You will learn about meshes and if you really think about it, it's hardly ever that you will have to hardcode primitives, you want detailed meshes that were created in a modelling package don't you You will further learn about how to load resources from disk and what is contained in these files.
Learning Objectives.
- Meshes
- Resource loading (further advancement)
Step 7
Special effects
You might want to start experimenting with Alpha blending to get transparency and so forth. If you have a good fundamental knowledge of the previous steps the world is your oyster. You will just improve as you carry on. You will also learn how the graphics pipeline works and how vertices/primitives are fed into the pipeline and colors are computed etc..
You might want to start looking into alpha blending as I have mentioned and then move unto some more advanced topics.
Learning Objectives.
- Alpha Blending (vertex, material, texture, frame buffer, render target)
- Graphics pipeline (further advancement)
Step 8
More and more learning (shaders)
Get a good grip with the Fixed Function pipeline, The fixed function pipeline is what you've been working with up until now. If you feel you are upto it you can move on to shaders or.. you could start coding your very own game. It may seem boring in the beginning but this is where you have to decide if you want to move on right now or code some games.
Start off simple like tetris, break out, pong.
Learning Objectives.
- Shaders or Game engine development
This might seem a little confusing at first. I hope not but I missed out alot of aspects and it's just a simple guide. Use the DirectX SDK docs, they are very helpful. When it comes to game engine development. GDNET is a perfect place to start with articles written by very popular people who have been developing for years.
There is no need to really buy a book. In expensive learning can take you where you want to go. If you have internet access most of the time. Make good use of it.
I hope this helps buddy.
Take care.
JariOjala
Becoming a successful graphics developer means you constantly strive to look beyond the "here and now." If you are just getting started in graphics programming, for instance, you should intensely focus on programmable pipeline graphics programming, as fixed-function pipelines are going the way of Bresenham's Algorithm (interesting to know historically, but that's about it).
My general advice...master the tutorials and samples in the DirectX SDK. Then hang out on these forums and on GameDev.net. You won't be sorry. In the end, the best way to learn graphics programming (going beyond the basics of creating a device) is to learn a "small" concept, then apply it in a simple game program. Repeat forever.
And that's my humble "spiritual guidance" for tonight
P.S. -- At the moment, I recommend Frank Luna's "Introduction to 3D Game Programming with DirectX 9.0" as a starter book. That's not a "Microsoft endorsement", that's just my personal opinion. I'll caveat that by saying that I haven't read too many "beginner level" books though (I'm kinda past that now), but if anybody reading this post is an author and wants me to read their book, feel free to contact me and I'll be delighted to go through it.