docs/src/integration/embedded_linux/opengl.rst
.. _opengl_overview:
OpenGL (Open Graphics Library) is a cross-platform, hardware-accelerated graphics API that provides a standardized interface for rendering 2D and 3D graphics. Originally developed by Silicon Graphics in 1992, OpenGL has become one of the most widely adopted graphics APIs across desktop, mobile, and embedded platforms.
The OpenGL integration consists of two main components:
OpenGL Draw Unit <opengles_draw_unit>): When enabled, LVGL uses OpenGL for hardware-accelerated rendering operations, including texture caching for improved performanceOpenGL support addresses several key use cases:
The OpenGL implementation provides significant performance benefits in most scenarios:
The following drivers can be used with OpenGL
The following drivers can be used and will automatically create and maintain an OpenGL context.
SDL driver <sdl_driver>Wayland driver <wayland_driver>DRM driver <linux_drm>GLFW driver <glfw_driver>All drivers except the GLFW driver use EGL (Embedded-System Graphics Library) under the hood.
Additionally, LVGL provides a generic OpenGL driver which the user may use to embed OpenGL textures in existing OpenGL applications. This driver assumes an existing OpenGL context and generates textures with hardware acceleration for integration into custom graphics pipelines.
For complete implementation details, see :ref:OpenGL driver <opengl_driver>.
.. _3d_gltf_support:
The glTF module provides support for loading and rendering 3D models using the glTF 2.0 specification within LVGL applications. This support requires OpenGL ES 2.0 with some extra extensions and provides comprehensive 3D rendering capabilities including PBR materials, animations, and interactive camera controls for embedded 3D visualization.
For complete implementation details, see :ref:glTF <gltf>.
The NanoVG draw unit provides a hardware-accelerated 2D vector graphics rendering backend for LVGL. It leverages GPU capabilities for antialiased path rendering, efficient image compositing, and text rendering.
For complete implementation details, see :ref:NanoVG Draw Unit <nanovg_draw_unit>.