I’ve sat down and did an Open Source implementation of OpenVG.
The implemention is licensed under GNU GPL v2 license and depends on the cross-platform Qt library. Qt 4.3 is required, mainly because to 4.3 I added perspective transformations and extended blend ops that are necessary for OpenVG. Since Qt 4.3 hasn’t been officially released as of yet, you’ll need a snapshot. Documentation on how to get Qt snapshots is available here:
http://www.trolltech.com/developer/down … /snapshots
And the OpenVG implementation (along with one example so far, of course animated one) is available as a tarball:
and also a Git repository is available from:
http://gitweb.freedesktop.org/?p=users/ … ;a=summary
if you have git installed you can check it out with:
git clone git://people.freedesktop.org/~zack/openvg
As far as the implementation goes, it’s on top of OpenGL. I don’t have hardware here with OpenVG acceleration support so I didn’t even bother with trying to come up with driver hooks, but obviously it’s something we’ll consider (where by “we” I’m referring to the Open Source community).
The rendering code is really well done and you can be sure that this implementation, altough on top of OpenGL, is faster than any other vector graphics API (which includes Avalon).
We’re planning to add OpenGL ES support to 4.3 meaning soon it will work with OpenGL ES as well.
You really want a card with support for fragment programs because they’re used for rastarization (for high-quality anti-aliasing), gradients, blend mode, patterns and non-tessellated ellipse drawing.
All in all, the dependency on Qt and the license could change. I’m more interested in whether people are interested in having an Open Source OpenVG implementation and if so what they would like to see.
I don’t think I’ll be able to follow this board (I’m not a big fan of online forums) but if you have an opinion, then please send them to zack at kde.org .
Oh, and if you have examples that you’d be willing to contribute that’d be great. In general the biggest problem of the specification is almost complete lack of source code for anything, but trivial operations. I especially enjoyed the part about gradients that has pictures of gradients (oh, so that’s how gradients look! ) but no code showing how to create each one of them.
So all in all: I’ll finish the implementation if there’s enough interest, Qt dependency and license could change, depending on the needs and the specification needs quite a bit of work to make it readable.