This biggest thing I got from this assignment was the technique of refactoring a large class without much previous experience with it. The core of creating a Mesh and Effect class was to migrate platform specific code outside of Graphics files into a interface that hides the differences between Direct3D and OpenGL. This not only abstracts implementation details, but also greatly simplifies how Graphics works.
Try it out here!
Probably the most difficult issue this assignment posed was consistently having to solve the same problem in different ways. Once I got Direct3D working it still took a bit to figure out what OpenGL needed. This showed me the value of how much work it actually takes to make something platform agnostic, which is largely abstracted away with game engines like Unreal and Unity.
I also saw many places of improvement for the Graphics code with obvious hard-coded values to draw the two triangles and rendering them. I think in the future a similar process of encapsulation can be applied to much of what is inside Graphics.
As for the GPU captures, I unfortunately couldn't get it working and was a bit strapped for time with this assignment. I'll be posting the screen shots after I figure out what was happening.