Performance OpenGL: platform independent techniques or

The OpenGL Application Programming Interface (API) is the most widely supported, cross-platform computer-graphics interface available to programmers today. Such broad support of OpenGL across different graphics hardware presents challenges in maximizing performance while still maintaining portability. This course focuses on teaching tools and techniques for the analysis and development of high-performance interactive graphics-applications.The course begins with an introduction to the stages of the OpenGL rendering pipeline, and the performance-limiting bottlenecks that can affect each stage of the pipeline. Simple, yet effective, techniques for determining which stage of the pipeline is limiting are presented.The course continues with a detailed analysis of each stage's operations, and the options that a programmer has control over. The interaction of those options with respect to performance is discussed, with an eye towards highlighting commonalities that aid performance across different platforms is presented along with empirical results to back up our observations.A brief departure into topics relating to object-oriented programming paradigms and how one's coding style can effect OpenGL's operation. Some suggestions for managing data in OpenGL with respect to encapsulation are presented.Continuing, the course introduces the concept of OpenGL's validation phase, and how this hidden operation can rob perfectly legitimate, well-written OpenGL applications of their performance. This discussion culminates with a discussion of state sorting.Finally, simple suggestions that are likely to help the performance of OpenGL applications are presented. These suggestions should be added into the programmer's tool box, providing simple optimizations that do not violate Professor Knuth's old adage of "premature optimization is the root of all evil."