The primary purpose of this project was to experiment with the latest version of OpenGL. Technically 4.5 was just released, but many graphics cards don't accept it yet. The other goal of this project was for me to gain a full understanding of everything my program was doing. So I started with dropping GLFW, and learning the basics of a windows application. This proved to be quite a bit of code, but was definitely worth the time to learn. I learned a fair amount of C++ along the way, and specifically have a better understanding of namespaces now. Then I learned how to setup the OpenGL context with it's version number and error handling. Next I had to get objects appearing on the screen, so I learned about VAOs and VBOs and how 4.4 shaders work. This was a significant departure from 2.1 which had lots of default variables that you set while there is barely any in 4.4 which lets the developer have more control. I found that I had to change about 70% of the code that had been used in the 2.1 programs to make sections 4.4 compatible. I used GLM to do all the matrices myself since there is no OpenGL stack or modelview. I hierarchically modeled two pieces and have them orbiting while moving across the screen. Then I attempted to use the tinyloader to read in an obj file. First it took me 5 hours to not have the application immediately crash while attempting to do this. Then I spent 5 more hours trying to get the object to actually appear, but ultimately wasn't able to.
There once was a high school student in Silicon Valley. He dreamed of one day working alone in a cubicle using the power of code to make creative solutions to challenges. This student entered Computer Science at Cal Poly SLO and for the first year all was well. Calculus and CPE102 were a bit difficult, but he made it through fine. Then things started getting worse while CSC225 went well, CPE103 was rough and set the stage for what was to come. The student then ran into CPE357 and was nearly destroyed and CSC349 did a number on him as well. He realized that he wasn't cut out to be that guy in the cubicle that programmed all day. In fact he realized he didn't particularly like programming at all. However, a new goal replaced the cubicle. He wanted a conference room. He realized that he loved meetings and working with people and that his true skill was in communication. He realized his sharp logic and analytics combined with strong communication skills meant he could be the link between engineers and business types. As his dream solidified in CSC308 and CSC378 he realized that he didn't want to just be the link, but dreamed of being a leader. At this conclusion he realized that what he truly liked about challenges was making decisions and while programmers do get to make coding decisions he was going to aim for more. So now he trudges along through classes like CSC471 learning the concepts and being able to reiterate and explain them to someone else, but struggling to learn the depths of programming behind them. His dream tech company produces amazing documentation that would be easily learnable even for people like him. Not the end.