Accelerated Path Rendering in OpenGL with NVIDIA Path Rendering SDK
Conventional OpenGL supports rendering images (pixel rectangles and bitmaps) and simple geometric primitives (points, lines, polygons). NVIDIA's NV_path_rendering OpenGL extension adds a new rendering paradigm, known as path rendering, for rendering filled and stroked paths. Path rendering approach is not novel-but rather a standard part of most resolution-independent 2D rendering systems such as Adobe’s PostScript, PDF, and Flash; Microsoft’s TrueType fonts, Direct2D, Office drawings, Silverlight, and XML Paper Specification (XPS); W3C’s Scalable Vector Graphics (SVG); Sun’s Java 2D; Apple’s Quartz 2D; Khronos’s OpenVG; Google’s Skia; and the Cairo open source project. What is novel is NV_path_rendering ability's to mix path rendering with arbitrary OpenGL 3D rendering and imaging, all with full GPU acceleration.
With the NV_path_rendering extension, path rendering becomes a first-class rendering mode within the OpenGL graphics system that can be arbitrarily mixed with existing OpenGL rendering and can take advantage of OpenGL's existing mechanisms for texturing, programmable shading, and per-fragment operations.
Unlike geometric primitive rendering, paths are specified on a 2D (non-projective) plane rather than in 3D (projective) space. Even though the path is defined in a 2D plane, every path can be transformed into 3D clip space allowing for 3D view frustum & user-defined clipping, depth offset, and depth testing in the same manner as geometric primitive rendering.
We invite you to visit our NV Path Rendering page for our SDK, demos, and papers.