An OpenGL® paint tool is a program designed to provide a user with the ability to create an image that is rendered using the OpenGL® graphics library and possibly hardware features and acceleration. The difference between an OpenGL® paint tool and other paint programs is that OpenGL® is based on three-dimensional (3D) geometry, while most other paint programs use two-dimensional (2D) flat surfaces. A 2D paint program records the colors of pixels, while a 3D paint program will instead record shapes that can be easily manipulated later. There are advantages to using an OpenGL® paint tool over some standard 2D paint programs, but there also might be a few complications that can make it difficult to use on some computer systems or unsuitable for certain applications.
In the most basic sense, any program that uses OpenGL® as the output method for rendering or displaying the interface and canvas is technically an OpenGL® paint tool. There are ways the program can be completely 2D in orientation, simply by modifying a texture map on a flat rectangle the same size as the viewing area to allow painting. Using OpenGL® for this type of application, though, can be wasteful because many workarounds will have to be developed to subvert the natural 3D proclivity of the graphics library.
More commonly, an OpenGL® paint tool closely resembles a vector-based graphics program. This means that when a user draws a line, circle or squiggle on the program’s canvas, it is recorded as a geometric shape as opposed to a collection of pixels. Once the geometry of a shape is defined, it becomes incredibly easy to modify just that single object independently of the rest of the painted image. In 2D programs, this can be difficult because the pixel information can be ambiguous and certain areas can take time to isolate and then manipulate.
Another powerful use for an OpenGL® paint tool is to texture, or paint, a 3D surface or mesh. This involves showing a 3D object as a series of connected triangles, called a triangle mesh, and then allowing a user to paint on the surface of the object. This is useful for 3D artists because, once the surface is painted, an image file can be produced and saved so the object can be texture-mapped in real time in a 3D program, application or game. The reason this is necessary in some instances is because the flat, 2D texture image will appear unpredictably distorted when not wrapped around the 3D object.
The use of OpenGL® as the display method for a program could cause problems for some systems. Not all graphics cards support OpenGL®, and some that do have performance issues with the drivers. There also are systems that only emulate OpenGL® rendering, meaning software is actually doing the processing instead of a graphics card, causing the rendering to occur very slowly.