Beginner series
- Coding basics; variables, functions, loops, conditions
- String manipulation using string/wstring and stringstream/wstringstream
Intermediate series
- Classes; constructors/destructors, RAII, access types,
- *1)File I/O using ifstream/ofstream instead of the C functions fopen/fclose on FILE*
- Resource management; unique_ptr, ComPtr.
- *2)Sprites; WIC (Windows Imaging Component), shaders, vertex buffers and textures
- Polymorphism, function overloading, templates, state-machines, recursion
Advanced series
- Math; *3) 2D/3D transformations, 2D/3D collision detection, *4)ray/line/plane/triangle/sphere intersections.
- Switch to 3D models, loading from file, creating vertex/index/constant buffers, creating samplers
- Advanced Shaders; Lighting, visual effects like blur and bloom.
- Bone/Joint animation
*1) Files are resources that need to be opened and closed, so it would kind of show a use for RAII if the file was put in a container, like unique_ptr and ComPtr.
*2) The Windows Imaging Component is just a image loader and format converter for various image formats. As far as sprites go, they would be textured quads rendered by the GPU, so you might have to cover everything that goes with it, but if the framework is already using a textured quad in order to display the system buffer, then you'd already have that setup and would just need to cover how it works.
*3) World/View and Projection Transforms. The DirectXMath API handles this, but you are kind of known for learning how the tools work, so I figured this would fit.
*4) Intersection tests can be useful for using the mouse to select players in a 3D RTS type game for example and collision detection.
All this hinges on you creating the framework in a way that already uses hardware acceleration. The beginner series can still be software rendering to a system buffer, and at the end of the frame, that system buffer is used to update an ID3D11Texture2D that is bound to a quad covering the entire screen. It's pretty fast, there's no cap on frame rate, like in the DX9 version of the framework. The point is to transition to hardware accelerated 3D a little quicker than your current route
.