Paperback: 384 pages
Publisher: Cengage Learning PTR; 1 edition (May 12, 2011)
Product Dimensions: 0.8 x 7 x 8.8 inches
Shipping Weight: 1.7 pounds (View shipping rates and policies)
Average Customer Review: 2.7 out of 5 stars See all reviews (11 customer reviews)
Best Sellers Rank: #1,349,838 in Books (See Top 100 in Books) #13 in Books > Computers & Technology > Programming > Graphics & Multimedia > DirectX #993 in Books > Computers & Technology > Games & Strategy Guides > Game Programming #1661 in Books > Textbooks > Computer Science > Graphics & Visualization
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?
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.