|Introduction to Direct3D and 3D-Engine Programming 2 (Base Course)|
|This course builds upon the first volume and dives right into advanced topics such as loading complex 3D models from various file formats, getting mouse and keyboard input, and building a custom GUI with window-, menu-, and button-objects you can even use in your fullscreen game code. |
This class will build upon the base code of the Sipogen engine introduced in the first volume of this course series. But now the focus is on enriching the Sipogen engine to let it become a real game engine. On the one hand you will learn new Direct3D techniques and how to integrate them into the engine. On the other hand you will also learn more general aspects of game engine components such as a flexible 3D-Model loader and how to get input from the user using the keyboard, mouse, and joystick. One major aspect of this course is how to do your own In-Game GUI elements such as buttons, windows, and menubars which are also usable in fullscreen mode. Finally, the object oriented design is a major aspect taken into consideration for all add-ons to the engine.
Free Sample Material
Below you can find the complete first week's course book, so you can check the quality and contents for yourself. Additionally, all demo applications can be downloaded.
Course Book Download (361kb)
Who should take the Class
The class is tailored for intermediate 3d-graphic programmers who desire to learn about how to make the step from building plain Direct3D wrapper code (sometimes mistaken as an engine) to a real, functional, and workig game engine.
Students are required to know how to use Visual C++ 6.0 or better, C/C++ and do basic vector mathematics.
The following 5 lessons are to be completed in 5 weeks:
- Lesson 1: At this point you should already know how to render 3D-primitves such as textured triangles from the first volume of this course. So this lesson jumps right into the action and shows you how to load 3D-Models in .x, .3ds, and .ac file format. You will see how Direct3D supports general triangle meshes and how you can use special functionalities such as mesh simplification.
- Lesson 2: After discussing 3D grahics for a number of lessons its now time to take care of a better input system that does not rely on the WinAPI. In this week you will learn how to query the keyboard, mouse, and joystick using DirectInput. Yet again the focus in this week is not on DirectInpup which has quite a number of good tutorials in the DirectX SDK. The focus is on how to integrate the input component into the object oriented engine allowing the user to be "called-back" on selected input events.
- Lesson 3: With the engine's input component from lesson 2 at hand we can now integrate a GUI system into the engine. You will learn how to do buttons, windows, cursors, and even whole menus attached to windows. Of course the GUI is flexible to some degree e.g. by letting the user choose a custom design (colors and fonts) at runtime or have either textures for buttons or render them with color and fonts i typical 3D-GUI-style like WinAPI. The whole GUI system of the engie is of course fully functional by the end of the lesson and can also be used in full screen mode in your games.
- Lesson 4: After getting lost input and GUI design this lesson gets you back to Direct3D and graphics effects. The lesson shows you how to use the stencil buffer in Direct3D for effects like a sniper's scope or stencil buffer shadow volumes. Again, the access to the stencil buffer is implemented in object oriented manner into the existing engine sources.
- Lesson 5: The last lesson of this volume deals with vertex- and pixel shaders as well as with the Direct3D effect files. The later one being somethig like a script-engine for rendering effects in Direct3D. You can include setting renderstates as well as whole vertex and pixel shaders in effect files. The beauty of this design approach is that you can change the effect file script without the need to recompile your 3D-application. The allows for easy changing rendering effects while omitting the need to wait for the compiler to recompile your project with changed renderstates.
|Unique users today:|
| ||Forum stats:|
| ||Since March'06:|