Just like OpenGL and most rendering engines that I know of, WebGL has no builtin support for text rendering. And on top of that, I can’t use the approach we use in PointLine at the moment. PointLine gets the outlines for the characters from the Windows GDI. So I was looking for something cross platform.
Searching on the internet there are two main approaches:
- Render the alphabet or the word in question to an image, and then use that image to texture some triangles.
- Trace the outlines of the characters and triangulate the polygons.
Although I prefer the second approach, I found an example of the first that looked simple enough on nehe. It was based on FreeType and for OpenGL. I started converting it to WebGL, but it was not as easy as it looked. It makes heavy use of display lists which are not available in WebGL.
So I looked further, and found the FTGL library which is also based on FreeType. It sounded like just what I need, but for OpenGL. So, I extended the library to allow me to extract the triangles for processing in WebGL. I sent my patch to the FTGL developers and hope for inclusion.
Meanwhile I can render texts in WebGL with my modified version of FTGL … of course it’s only so easy to do when using Wt::WGLWidget from the excellent witty library.
Here is my research prototype which now has text.
Here are the important parts of how it’s done with the modified libftgl: