Chapter 15. Combining OpenCL and OpenGL
This chapter covers
- The functions needed to configure OpenGL-OpenCL interoperability
- A method for coding OpenGL-OpenCL applications
- Rendering animated models with OpenGL and OpenCL
One of OpenCL’s greatest strengths is that it can accelerate applications based on OpenGL, the cross-platform API for 3-D rendering. The end goal of an OpenGL application is to compute two-dimensional arrays of numbers that correspond to pixel colors. These pixels must be computed quickly—on a high-resolution display, the application may need to compute hundreds of thousands of colors for each new frame.
The content of this chapter assumes a basic familiarity with OpenGL 3.3 or above and shader development. Appendix B introduces both topics. In addition, the code in this chapter will only compile on systems that support OpenGL 3.3 or above.
Hardware-accelerated OpenGL applications rely partly on a CPU and partly on a GPU. For example, the CPU may set vertex colors and texture coordinates, and the GPU will process the CPU’s data to obtain pixel colors. In a physics application, the CPU may solve the kinematic equations needed to determine a projectile’s trajectory, and the GPU will transform the vertices needed to depict the object’s motion.