RenderingAPIs typically provide just enough functionality to abstract agraphics accelerator, focussing onrendering primitives, state management, command lists/command buffers; and as such differ from fully fledged3D graphics libraries,3D engines (which handlescene graphs, lights, animation, materials etc.), and GUI frameworks; Some provide fallbacksoftware rasterisers, which were important for compatibility and adoption before graphics accelerators became widespread.
Some have been extended to include support forcompute shaders.
Low level rendering APIs typically leave more responsibility with the user for resourcememory management, and require more verbose control, but have significantly lowerCPU overhead,[1]and allow greater utilisation ofmulticore processors.
As of 2016, these are generally considered obsolete, but were still important during the transition to hardware acceleration:
These libraries are designed explicitly to abstract 3D graphics hardware forCAD andvideo games, with possible software fallbacks.