Monday, March 1, 2010

DirectX

So at Full Sail we have a whole class dedicated to DirectX. The class is instructed by Wendy Jones author of several DirectX books (http://www.amazon.com/Wendy-Jones/e/B001JP274W/ref=ntt_athr_dp_pel_1).

When I came through this class it was Wendy's second class - today the class is more shader driven, but when I took it we did a lot of fixed function pipeline.

The class was challenging with 4 hours to finish all the work correctly and submit it - almost all assignments came down to the wire, I remember sweating through each lab, you can hardly look up or lose focus for even a moment without it affecting your grade. In this class we really put into practice the idea in agile programming that you "just make it work" then optimize and refactor. From this point on, in the program, most classes are like this - very limited time to get a lot done; you have to work fast - real fast - but you get good at it. Eventually you begin to incorporate design aspects and OOP principals that make your life easier and help you get things done faster.

So as stated we used a lot of fixed function pipeline in the class, we covered things like vertex and index buffers supporting position, texture-UVs, and normals. Direct Sound (including streaming sounds), X-Input and Direct-Input, rendering 2D sprites, rendering 3d Models created by hand and from file, loading textures, lighting (point, directional, and spot), billboarded quads, point-sprites, and particles.

The class was a good covering of all the basics of DirectX, for the final we put it all together and created a scene that uses input, streaming sound, 3d models and texturing, and several types of cameras like 3rd person and free cam. As I said the pace is very intense and it really prepares you for the next class (SGD) where you create a game by yourself using DirectX wrappers provided by the school.

From what I hear this class just keeps getting better with Wendy at the helm - if you take it in the future look forward to lots of HLSL shader techniques and possibly writing an importer for your own custom model format.