|  
                               DirectX 
                                8 and Visual Basic Development 
                                Author: Keith Sink 
                                Publisher: Sams 
                                ISBN: 0-672-32225-0 
                                Purchasing: [Amazon.Com] 
                                [Fatbrain.Com] 
                                - RRP US$39.99 
                                Reviewed: 16th December 2001 
                              Front 
                                Cover Shot: 
                                
                              Overview 
                              I 
                                wasn't really very sure what to think of a book 
                                like this before I actually got it; Having been 
                                aware of it coming for quite a while now, and 
                                knowing that this was (and is) the only book on 
                                the subject. This is simply based on the fact 
                                that the DirectX 8 API is an absolutely massive 
                                library - with 5 main sections, each warranting 
                                their own book all-together. This book weighs 
                                in at 459 pages, which by simple maths would leave 
                                91.8 pages per section (ignoring contents/introduction/index 
                                etc...); and as I already said, each element of 
                                the DirectX API warrants it's own book fullstop 
                                - such that 91.8 pages makes for quite a small 
                                book ;) 
                              The 
                                Origins 
                              This 
                                book is not aimed at games programming - the author 
                                makes this fairly clear from the start, instead, 
                                it's aimed at general multimedia usage and more 
                                specifically towards business applications. Things 
                                such as "Use Direct3D to show off models 
                                of your products to the customers"... which 
                                is a perfectly valid usage of DirectX, but probably 
                                not what most programmers will be using it for. 
                                This is a good thing to a certain extent, because 
                                adding game programming into the mix makes things 
                                much more complicated, and as it stands this book 
                                will teach you DirectX - not DirectX AND games. 
                                 
                              The 
                                Actual Book 
                              The 
                                book itself is well laid out - as with the majority 
                                of the sams books, it is cleanly divided 
                                into sections/chapters, and they all follow a 
                                logical order. The writing style is good, and 
                                easy to follow - he makes good use of examples 
                                to illustrate features/ideas, which makes it much 
                                easier to read through. My only reservation with 
                                the layout/design of this book is the code samples 
                                - There are several pages taken up with lists 
                                and lists of functions with very little explanation; 
                                and the actual code is not always easy to copy 
                                into VB to experiment with.  
                              This 
                                brings me onto one other point - there is NO accompanying 
                                CD, which I think is a big mistake on their part. 
                                I dont really like having to spend half-an-hour 
                                copying up 10 pages of text only to find that 
                                there's bits missing, or that I've made lots of 
                                typing errors. For example, he sometimes uses 
                                little helper functions "GetVector()" 
                                for example, whilst this is only a trivial problem, 
                                it is never discussed, and the code for these 
                                functions is never shown. Given that almost every 
                                computer manual now ships with the source/tools 
                                on the CD for you to look at while reading/learning 
                                I dont know why there is no CD with this book. 
                                It is partially made up for by including links 
                                where you can DOWNLOAD the source code, but I 
                                found that some places either had no links, or 
                                were quite large to download (not a problem unless 
                                you're still using a 56k modem like me!). But 
                                I do feel a little sour that I have to spend my 
                                time (and more money) searching the net for the 
                                code examples. The other aspect to this is that 
                                you'll need to download the DirectX8 SDK from 
                                microsoft - whilst a cut down VB-only version 
                                exists, to get the most of the API you should 
                                get the full version, which is 180+mb, which will 
                                take enough time even on a cable modem. I dont 
                                know if the microsoft licence would allow Sams 
                                to include the SDK on a cd, but it would have 
                                been an excellent thing to do. 
                              The 
                                Content 
                              Now 
                                the important part - the content of the book, 
                                what you are actually paying your good money for... 
                              What 
                                is covered in this book is covered well, but there 
                                are some major gaps in the content, this is the 
                                result of only having (roughly) 90 pages per area 
                                of DirectX - and perfect justification for having 
                                a whole book on each area. This book quite clearly 
                                sacrifices depth in favour of being broad, it 
                                covers every section of DirectX, but only at a 
                                taster/very low level. 
                              My 
                                main area of interest is Direct3D, thus I couldn't 
                                stop myself from pulling apart the Direct3D chapters 
                                for errors, missing parts and bad ideas. It would 
                                be very very difficult to go do anything remotely 
                                complicated in Direct3D having only learnt the 
                                content in this book. Even if you did, it probably 
                                wouldn't work on many computers...  
                              There 
                                is little mention of enumeration - an aspect so 
                                vital with DirectX programming that the author 
                                should be shot! on page 131 he discusses creating 
                                a D3D device (using CreateDevice) and he 
                                specifies D3DCREATE_HARDWARE_VERTEXPROCESSING 
                                as one of the parameters, and whilst he does give 
                                a brief mention to the existance of D3DCREATE_SOFTWARE_VERTEXPROCESSING 
                                he completely ignores the fact that only certain 
                                3D cards will support the code he's using... thus 
                                anyone not familiar with this (ie, most of his 
                                readers) will type this code in blindly and sit 
                                there scratching their heads wondering why it's 
                                not working... when a simple 4-5 lines of enumeration 
                                code would have solved the problem before it became 
                                an issue... 
                              He 
                                is also a little bit brief with Direct3D Lighting 
                                - no mention of different types (point/spot/directional/ambient), 
                                and the pictures on page 110, whilst very pretty 
                                will not be happening! I know how to get lighting 
                                like that, as will many experienced programmers 
                                (lightmaps, shadow volumes, bump-mapping etc...) 
                                he gives the impression that these are standard 
                                lighting effects for Direct3D, which is a complete 
                                lie! Direct3D has no native support for shadows... 
                                and the accuracy of the lighting in those images 
                                look more like lightmaps than lights... in fact, 
                                they almost look like 3D-Studio-Max renders... 
                              As 
                                I already touched on, there are some bad practises 
                                present here - no mention of triangle culling, 
                                vertex types (lit/unlit/untransformed), proper 
                                texture sizes, depth buffers and texture formats 
                                (D3DFMT_*). There is also very little mention 
                                of anything even remotely advanced, you 
                                can quite easily design a simple business application 
                                or database program using this book - but forget 
                                making anything more advanced than that (ie, games). 
                                For a relevent metric to base this against, the 
                                Direct3D section goes about as far as lesson #4 
                                on this web page 
                                - albeit in a different order with somethings 
                                added/removed.  
                              It 
                                sounds like I'm being very harsh on this book's 
                                contents, but maybe it isn't really the author's 
                                fault - it probably isn't an option to create 
                                a 5 book series for one version of DirectX (given 
                                that a new one appears every couple of years), 
                                and if you have to cover everything in one book 
                                you have to loose much of the added detail to 
                                fit it in... But that makes for a rather empty 
                                book - compared with the many websites (like this 
                                site) that cover this topic to a much greater 
                                depth it is a huge shame. There is also quite 
                                alot of time wasted (in the DirectXGraphics section) 
                                on useless things - amplifying the lack of space. 
                                In particular, DirectDraw?? why?? It's not even 
                                in DirectX8 - and he later goes on to show how 
                                Direct3D8 can do 2D graphics (what DirectDraw 
                                did), and second to that, why discuss palettized 
                                effects, I dont know of ANY current graphics chips 
                                that cant do 16bit or greater - so why do we still 
                                need to be covering 8bit modes? (sure, palette 
                                animation is cool, but D3D lighting is easier, 
                                faster and looks much better). 
                              In 
                                Conclusion 
                              I 
                                came away from this book feeling a little disappointed 
                                - almost everything in here has been done for 
                                free on the internet, been done a long time before 
                                this book, and in some cases, done considerably 
                                better. The only real advantage of this book is 
                                that it's a book - and you dont need to be staring 
                                at your web-browser to learn stuff... 
                              
                                
                                   
                                    | Good 
                                      Things | 
                                    Bad 
                                      Things | 
                                   
                                   
                                    |  
                                      Well structured chapters and sections. | 
                                     
                                      No CD included, not everything is downloadable 
                                      from the website | 
                                   
                                   
                                    |  
                                      Aimed at general multimedia work | 
                                     
                                      Absolutely no depth to the book - very limited 
                                      use if you intend to go far with DirectX | 
                                   
                                   
                                    |  
                                      Nice history section | 
                                     
                                      Teaches some bad practises, and skips some 
                                      very important aspects (eg, enumeration). | 
                                   
                                   
                                    |  
                                      Good explanation of the key terms that it 
                                      does cover.  | 
                                     
                                      Includes a section on DirectDraw - why? | 
                                   
                                   
                                    |  
                                      Includes some VB.Net code | 
                                     
                                      You can get everything covered in this book 
                                      from a variety of sources online - for free. | 
                                   
                                 
                               
                                 
                               |