Teaching OpenGL and Computer Graphics with Programmable Shaders

This paper presents our approach and experiences of transferring an introductory computer graphics course from the fixed-function OpenGL pipeline to modern shader-based OpenGL. We provide an overview of the selected course structure and the C++-based programming environment that we use for assignments and projects, and discuss some of the technical and pedagogical challenges, e.g., multiplatform support and shader debugging, that we ran into. Based on course evaluations and the outcome of programming assignments, we conclude that introducing shaders early and skipping the fixed-function pipeline completely is a sound and viable approach. It requires more initial effort from teachers and students because of the added complexity of setting up and using shaders and vertex buffers, but offers a more interactive and powerful programming environment, which we believe helps promoting the creativity of students.