Enhancement One: Software Design & Engineering
I chose to enhance an OpenGL/C++ project/artifact that I originally created as the final project for the CS-330 Computational Graphics and Visualization course. This project is a computer graphics generated scene showcasing a school setting. The scene itself features several primitive shapes, lighting, and object texturing.
I selected this artifact due to its challenging programming dynamics and nature. This was probably one of the hardest classes I have taken in the Computer Science program at SNHU. The specific components of this project that showcases my skills and abilities in software development and engineering includes Graphics Processor Programming (GPU) and creating primitive shapes. Beyond the simple primitive shapes, such as rectangles and planes, I have also showcased my ability to create complicated shapes, such as spheres and cylinders.
In addition, I created complex Phong lighting for my scene, utilizing two light sources, and I incorporated texturing for my scene objects. This artifact was improved and enhanced by adding a chalk board and stand to the scene, as well as adding additional texturing. This requires a complex understanding of how this code works, as well as how GPU’s work. In addition, I added user authentication via a user name and password. The scene will not render unless the correct user name and password are entered.
I exceeded the enhancement objectives I planned to meet in Module One. This artifact will reside in GitHub. It will be available in a public repository which will foster a collaborative and accessible environment for others. My software development skills directly reflect the successful enhancements to this software artifact. The enhancements I added to this Milestone aligns with the Computer Science program outcomes as defined in the CS 499 Final Project Guidelines and Rubric document.
Rendering graphical objects is not easy. I had to go back and relearn the nuts and bolts of this code. Learning the OpenGL programming language is very much like learning a new language for the first time. There are a lot of moving parts, and it is very easy to get lost in the code. This is why adding detailed comments in the code is so beneficial. They certainly helped me understand this code seven months after taking the CS-330 course.
I learned that good code comments make all of the difference. Had it not been for the comments, the enhancements would have been much more difficult to implement. Additionally, I learned that I didn’t need to create a new VBO for my enhancements. I was mistaken with my initial assessment that an additional VBO would be needed. One of the hardest aspects of modifying this artifact was the positioning and scaling of the newly added primitive shapes. It is a very tedious and time-consuming undertaking. Every object’s movement has to be in relation to the scene origin. Keeping the X, Y, and Z coordinates the same for each object is very challenging. Below, I added screenshots for my enhancements for this artifact.
CS-330 Final Project Before Enhancements
CS-330 Final Project After Enhancements
Link to Repository
(Note: The original project is also available at the following link)
Porfolio Links