1. The What, Why, and How of DirectX. 2. Your First DirectX Program. 3. The 2D Resurgence. 4. Text and Font Rendering. 5. Input Detection and Response. 6. Audio in DirectX. 7. 3D Primer. 8. Shaders and Effects. 9. Cameras and Models in Direct3D. 10. Conclusions.
About the Author
Allen Sherrod is an experienced author in the field of video game development. Allen's past works include two editions of Ultimate Game Programming with DirectX, Ultimate 3D Game Engine Design and Architecture, Game Graphics Programming, and Data Structures and Algorithms for Game Developers. Allen has also contributed to the Game Developer's Magazine, the Game Programming Gems 6 book, to the Gamasutra.com website, and is the creator of www.UltimateGameProgramming.com.
Wendy Jones devoted herself to computers the first time her eyes befell an Apple IIe in elementary school. From that point on, she spent every free moment learning BASIC and graphics programming, sketching out her ideas on graph paper to type in later. Other computer languages followed, including Pascal, C, C#, and C++. As Wendy's career in computers took off, she branched out, teaching herself Windows programming and then jumping into the dot-com world for a bit. Although Internet companies provided a challenge, they didn't provide fulfillment, so Wendy started expanding her programming skills to games, devoting any extra energy to its pursuit. Wendy's true passion became apparent when she got the opportunity to work for Atari's Humongous Entertainment as a game programmer. During her time at Atari, she worked on both PC and console titles, thrilled with the challenge they provided. Wendy can now be found at Electronic Art's Tiburon studio in Orlando working with some wonderfully talented people on Next Generation consoles. If you have any comments or questions about this book, you can reach Wendy at her website at http://www.fasterkittycodecode.com.
Most Helpful Customer Reviews on Amazon.com (beta)
26 of 28 people found the following review helpful
A Good Beginner's Primer to DirectX11June 17 2011
- Published on Amazon.com
Being an OpenGL only person, I figured it was time to broaden my horizons and see what DirectX was all about. This book is good about breaking down every parameter to each function using DirectX. For example, it explains what every parameter to D3DX11CreateDeviceAndSwapChain do and what they're used for. There are a few problems with this book that can frustrate the crap out of you if you don't realize it is a small error. I haven't read the book spending hours on each page, but I was able to find a few errors that cause tension when you're learning:
1. Page 51: ID3D11Context doesn't exist, it is ID3D11DeviceContext. I searched the header files for ID3D11Context and it simply doesn't exist. If you knew DirectX11, you'd know it was ID3D11DeviceContext instead, but for a beginner who has no idea, it can be a frustrating response when your compiler says "ID3D11Context: undeclared identifier".
2. Page 54: OMSetRenderTarget doesn't exist it is OMSetRenderTargets. A very simple error (they left of the 's'), but you can spend a lot of time just hunting down the correct function. Luckily, the following pages contain OMSetRenderTargets correctly, but if you're like me and like to step through the book while programming, it doesn't work.
3. Page 118: "A 2D texture uses a single value for its texture coordinate. A 2D texture uses two values for its texture coordinates". I think they meant to say "A 1D texture uses a single value for its texture coordinate." Without any knowledge on graphics programming, this could be a problem.
4. This book doesn't show what header files or libraries are required for each function. For instance D3DX11CompileFromFile isn't in d3dcompiler.h, it is in d3dx11async.h. Do I include d3dx11.lib or d3d11.lib? OpenGL (using GLEW) uses opengl32.lib and glew32.lib and that's it.
5. This book uses DXTRACE_ERR and DXTRACE_MSG. However, unless you know where these are or which header they're in, you'll have to search for yourself. Also, don't forget the library file dxerr.lib!
All in all, this book is a good beginner's book. It doesn't go into depth about graphics programming, it is just about DirectX11 (which you can get from the title of the book). So know what you're getting into. If you don't know anything about 3D programming, this book really isn't for you. If you do know 3D programming, but want to learn the new(er) DirectX11, this book IS for you.
6 of 6 people found the following review helpful
Not Well FocusedDec 27 2011
- Published on Amazon.com
If this book spent less time explaining Intro to C++ topics like why I should use the managed pointer libraries (really?) and didn't write every single example out like a lesson in maximum object-oriented coding, it might have had space to actually get into DirectX 11 topics like tesselation. And, maybe some real gaming concerns like collision detection and how to use DirectCompute. Or 3D/stereoscopy. Or interfacing with other MS libraries (GDI, DirectDraw). Or any of a host of actual gaming topics. Instead, by the end, you are prepared to understand only the most rudimentary examples that are covered by many on-line tutorials in one quarter the space. But, hey, you will remember to error check every single API call and never to let the memory manager de-allocate anything when you are done (I am trying to sarcastically say that every example is a long-winded and pendantic).
There are also a lot of minor errors that any competent reviewer should have caught. And even a non-technical editor should have noticed that many of the graphics are unrecognizable. These aren't terrible in and of themselves, but are probably indicative that this book was really rushed to market.
It is hard to believe that either of these authors have ever written any serious, real-time gaming code. They seem better suited to writing Intro to Java books. For which they would probably be great. Use the Web tutorials and SDK examples first. Only buy this book if you really, really want another pass of the same material. I would be very bummed if I had only this to use as my primary source.
7 of 8 people found the following review helpful
Good overview, misleading title.Oct. 10 2011
- Published on Amazon.com
When I first saw this book a few months before it was released, I got very excited. As soon as it was available on preorder, I ordered it.
It came to me and I immediately began reading it. The information at the beginning was useful and well written, but not once in the entire book did I get a sense of "game" programming. If the book was not titled "Beginning DirectX 11 Game Programming", I would have never known. This book is anything but game programming, which would have been OK with me if the title didnt blatantly advertise it. This doesnt even cover audio. Not once in the book do you get to create a demo game of any kind. When I purchased this book, I expected to see what I saw in "Beginning Game Programming Third Edition" but better. If there is another edition of this book written, I would like to see it cover a demo game in each chapter, and I would like to see every part of DirectX covered (Including XACT, DirectCompute, and XAudio. Even if just a few pages).
Long story short... Worth the money ($20)... But if you are looking for a DirectX 11 book for beginners that covers everything and at the same time offers demo games, the book does not exist yet; trust me.
Authors: If you read this, please do not be offended. I am not doing this out of spite, I just wanted to express my thoughts on what the book appeared to offer and what it actually did. The things that were written were written well; I am more concerned that the parts that were not written at all that I believe should have been written.
8 of 10 people found the following review helpful
A poor choice even if you're a stark beginnerMay 11 2012
- Published on Amazon.com
You should never buy a book of this type with the expectation that you'll be able to skim a few chapters, copy some code listings, and come away with a feature-rich renderer and/or a complete understanding of the technology. There's a reason why complex engines are built by a team of developers with specialized knowledge and experience. The best you can hope for is to find a book that focuses on a specific area and delivers good content on that particular topic.
All that having been said, this is a terrible book. It is merely a rehash of extremely high-level, "hello world" type content that already exists elsewhere. Whenever the text gets close to discussing the actual workings of DirectX you will see statements like, "... but that is an advanced topic". Or, even worse, some aspect of the API will be mentioned in passing and never referred to again. It also teaches you terrible habits like performing file format conversions at load time ("loading models" section), and demonstrates performance-sucking "techniques" like using memcpy when you should do a double-buffer pointer swap ("reading input" section).
The bottom line is that even if you are a complete beginner, you should steer clear of this book. At no point does it venture into the waters of DirectX deeper than ankle level, and it is full of awful code practices that no actual game developer would ever teach you, even accidentally.
You can easily find far more in-depth information for free, including video/slides from various developer conferences like Gamefest and GDC, the documentation and samples, and from all over the web. If you want to spend money on additional references, I would suggest Luna's book. That text at least discusses how to actually use DirectX, whereas this book only prepares you to render a simple tutorial asset in a tutorial framework that you would never use as the basis of a real renderer.
For the record I've been a professional game developer for the past 13 years. I've put games on the PC and on every console from the PS2 forward, and I use DirectX every day (where applicable). I'm reviewing this book in the hope that no aspiring developer will be fooled into purchasing it.
Basically just a list of examples, and chock full of mistakes.Dec 2 2013
- Published on Amazon.com
I do not recommend this book.
First of all, there were very few pages which could genuinely be considered "game programming" (it was bold of them to put it in the title. If you're looking to learn actual game programming, do not purchase this book. Not a single game-like example even exists in the book.
If you want to really understand the Direct3D rendering pipeline, this is also not the book for you. The authors tell you everything you need to do to create the demo programs from the book, but never tell you anything about WHY you must take the steps you're taking. This means that when you're done reading the book, you will be left with the amazing ability to recreate the demo programs, and very little else. The chapter on text rendering was laughable.
The worst part of this book is all of the blatant errors. Right at the beginning of the book they mention that there is a companion website with an errata section where you can go to let them know if errors they find. That's a lie. The website is 1 page and has no way of submitting error info. Not even an email address to contact them at. There is an errata section on the website.. so where did the info in the errata section come from? An Amazon review (no really, look the review is right there). Are you kidding me?
Most of the errors are simple typos in the text, some of them are errors in the code, but the most egregious errors were the ones where they just explain stuff incorrectly. For example, in their explanations of 3D coordinate systems, they talk about left-handed coordinate systems and right-handed coordinate systems. The figure they show as an example of a left-handed coordinate system... IS RIGHT-HANDED COORDINATE SYSTEM. Then they explain that to switch the handedness of the coordinate system you swap the positive and negative sides of two axes ------ WHAT? NO! You swap ONE axis! This leaves me with the impression that they don't really understand how the stuff they're doing works under the surface at all. Another example is when they're talking about dot products, and explain that when facing away from a light source the dot product of a face's normal and the light vector is zero... NO. It's NEGATIVE. I really don't think they understand this stuff themselves. I feel bad for readers that didn't go into this book already having a strong mathematical background, because what they're being taught is simply wrong.
The only good thing I have to say about this book is that the demo code on the companion website compiled and ran on the first try.
You can learn everything in this book just as easily by spending a couple hours reading online DirectX11 tutorials.