Super Hexagon is one of my favorite, favorite games! I come back to it again and again and again! The major goal for this project was to create a new renderer in Direct3D, adding a new graphics API to the portfolio. Implementing the new renderer was pretty painless. I found the API well organized and well documented. The layout helps me to really understand the render pipeline and what occurs at each stage. I settled on Direct3D 11 because persistent buffers are supported by that feature set. I found that all online tutorials ( and I mean ALL online tutorials ) do two things I don't like: create texture resources from dds files and create shaders from separate files. It took some time in the documentation to fix it to create shader resources from textures and shaders from strings, but it's well worth it. I'm not sure yet how I feel about Direct3D vs OpenGL. In OpenGL, I like using a single API call to toggle a renderer state (blending, scissor, etc.), instead of having to maintain a state descriptor in Direct3D. But Direct3D really helps me to understand what the renderer is doing at each render stage. One other note: Previously, in my code base, I differentiated between regular and monospace fonts. Monospace fonts took less memory because they did not contain any kerning information or unique advance width per character. The font code can be found in a lot of systems: assets, textures, renderer, debug, defaultFont, etc. The memory savings (tiny) was not worth the mental effort of maintaining two types of fonts. Consolidating the code to a single font type makes the code base much simpler and is better for my peace of mind.