23 of 25 people found the following review helpful
- 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
- 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.
6 of 7 people found the following review helpful
- 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
- 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.
A. M. Hernandez
- Published on Amazon.com
Format: Kindle Edition
Beginning DirectX 11 Game Programming by Allen Sherrod is, what I’d consider, a great introduction into DirectX programming. Just to be clear, it’s really only an overview of the DirectX APIs (Direct3D, DirectInput, etc.) and not really a graphics or game programming book (despite the title). So there is very little in the way of actual gameplay type programming, as you never really get to the point of having any sort of game demo. In that same respect, you don’t really deal too much with computer graphics theory, though there is some brief coverage of lighting models in regards to shader programming. That said, what is in the text is a good start to learning the DirectX 11 API and getting some foundation knowledge of the Windows platform.
The book covers basic Win32 window creation, initializing Direct3D, error handling, basic 2D graphics concepts, font rendering, input handling (with Win32, DirectInput, and XInput), fundamental 3D math (vectors, matrices, coordinate systems), cameras, and 3D models. Overall a good amount of topics, and decent coverage of the building blocks for working with the DirectX 11 SDK. While I wouldn’t say the book is for “beginners” (as nothing involving DirectX or Win32 is really for novices), it doesn’t go into as deep a depth as something like the Frank Luna book (which covers more interesting topics like normal mapping and shadow maps). However, I did find the discussion at the end about loading the OBJ 3D file format into Direct3D to be unique, as most books do not go into this.
So do I think Beginning DirectX 11 Game Programming is worth reading? Certainly. It was an approachable read and the Kindle e-book was moderately priced at around $25. For sure, if you are working with the DirectX 11 SDK you will want all the help you can get. Granted, I think some of the other titles I’ve seen had more impressive demos, or deeper coverage, but I felt this was a fine introductory text. I’d even go as far to say that you should read this book first, as it presents the basic knowledge in a way that is much more to the point and not as daunting as some other resources.
The one thing, which is both exciting and sad, is that I believe this was the last DirectX 11 book available on Amazon that I haven’t read. I see there are a few newer books covering DirectX 11.1 or later, but I’d really like to stick to straight 11 due to Windows 7 compatibility. So, at this point, I think I maybe have got as far as the introduction books will take me and I will have to just start developing with it and learning as I go. Not a bad problem to have. Although I still have a few general game engine books in my backlog, I’m feeling more confidant about getting into the trenches of development with my engine and this book has definitely helped.