Game controller support can be problematic across multiple platforms, especially when spanning desktop and mobile. Both Windows and Android provide C-code APIs for game controllers, but they tend to be very different, even at the architectural level. As a result, many games moving from desktop to mobile may be tempted not to bring over their existing gamepad support. With the growing number of Android-based gaming systems such as NVIDIA SHIELD and other gaming handhelds and micro-consoles, gamepad support on mobile is an increasingly important differentiator. The NvGamepad library seeks to help solve the problem of implementing cross-platform game controller support.
NvGamepad is a simple C++ library that provides an application developer with a cross-platform gamepad-reading (buttons and axes) class and multiple implementation classes. The implementation classes (one for each supported platform) are designed to be easy to integrate into the particular user-input handling idiom of that platform. The code consuming the gamepad events sees and knows nothing of the platform implementation.
The library is designed to be integrated, modified and expanded by developers as they see the need. The full source code of the library is available, and NVIDIA's own cross-platform OpenGL Graphics and Compute Samples use the class for input handling.