Preface
OpenGL is a multiplatform, cross-language, and hardware-accelerated application programming interface for the high-performance rendering of 2D and 3D graphics. An emerging use of OpenGL is the development of real-time, high-performance data visualization applications in fields ranging from medical imaging, simulation or modeling in architecture and engineering, to cutting-edge mobile/wearable computing. Indeed, data visualization has become increasingly challenging using conventional approaches without graphics hardware acceleration as datasets become larger and more complex, especially with the evolution of big data. From a mobile device to a sophisticated high-performance computing cluster, the OpenGL libraries provide developers with an easy-to-use interface to create stunning visuals in 3D in real time for a wide range of interactive applications.
This book contains a series of hands-on recipes that are tailored to both beginners who have very little experience with OpenGL and more advanced users who would like to explore state-of-the-art techniques. We begin with a basic introduction to OpenGL in chapters 1 to 3 by demonstrating how to set up the environment in Windows, Mac OS X, and Linux and learning how to render basic 2D datasets with primitives, as well as more complex 3D volumetric datasets interactively. This part requires only OpenGL 2.0 or higher so that even readers with older graphics hardware can experiment with the code. In chapters 4 to 6, we transition to more advanced techniques (which requires OpenGL 3.2 or higher), such as texture mapping for image/video processing, point cloud rendering of depth sensor data from 3D range-sensing cameras, and stereoscopic 3D rendering. Finally, in chapters 7 to 9, we conclude this book by introducing the use of OpenGL ES 3.0 on the increasingly powerful mobile (Android-based) computing platform and the development of highly interactive, augmented reality applications on mobile devices.
Each recipe in this book gives readers a set of standard functions that can be imported to an existing project and can form the basis for the creation of a diverse array of real-time, interactive data visualization applications. This book also utilizes a set of popular open-source libraries, such as GLFW, GLM, Assimp, and OpenCV, to simplify application development and extend the capabilities of OpenGL by enabling OpenGL context management and 3D model loading, as well as image/video processing using state-of-the-art computer vision algorithms.