differences between Open GL and Open VG

I am a beginner in these different standards.

I am looking for answers to very basic questions.

  1. Why do we need different graphics standards like Open GL, Open GL ES, Open VG? Why can’t one single standard serve the purpose?

  2. What are the differences between OpenGL and OpenVG? I suppose both the standards can deal with 2D graphics.

  3. From my understanding, OpenVG supports both raster and vector graphics. What do OpenGL support?

  4. Are there any resources that gives a pictorial or clear understanding on where Open GL, Open GL ES and Open VG stand in terms of graphics?


You really should read the extract to the specs to get a feel for the APIs. Hard to do the topics justice in a few short sentences here.

  1. The different standards are aimed at solving different problems. A single standard would be too huge a driver, have too many entry points for anyone to actually learn them, would be impossible to update the spec, and even make a single fully compliant driver. Put simply, systems that require Vector Graphics (the VG in Open VG), do not necessarily need 3D graphics and vice versa. Open GL ES is 3D graphics for embedded systems - i.e. systems that do not have infinite resources and where supporting hardware acceleration of the full set of Open GL features would be impractical (power & cost).

  2. Open GL a standard for rendering 3D graphics. It can render bitmaps by drawing rectangles painted with the bitmap to the screen. Open VG is mainly for vector graphics - think commands like “draw a line of width 5 from point A to point B then an arc to point C” type commands. Open VG also has many functions for image manipulation/processing and display (in 2D).

  3. OpenGL supports raster textures. The main focus of Open GL is not for blitting images (though it is used for that due to the presence of hardware acceleration in most systems) but to display things in 3D.

  4. Open GL is used for rendering 3D graphics in realtime. Think games - like first person shooters. Objects must appear like they are 3D, and illuminated correctly. Open GL ES is the same thing, but for embedded systems like the iPhone, which do not have all the fancy hardware that makes modern games run fast. Generally, GL ES is a leaner and slower version of full Open GL with a lot of the more obscure features stripped out.
    Open VG is for display of Vector Graphics. It can be used for things like font rendering, flash, SVG, etc. Generally, there is much less hardware support for Open VG, though many embedded systems support it for 2D rendering.