将文本转换为网格

时间:2013-08-16 12:53:14

标签: c++ opengl direct3d freetype glyph

我需要将文本(字符串+字体)转换为网格(顶点,索引,三角形等),但我不需要绘制任何东西。我只是从一个API中获取一个字符串并将其作为顶点和顶点推送。指数到另一个。这样做最简单/最简单/最好的方法是什么?字体度量和文本放置当然是可用的,不需要其他转换。

我目前正在使用VC ++。但是,任何类型的OpenSource(C / C ++,C#,VB,...)和“非开放但免费”的COM / .NET -libraries都会很棒。

我听说过FreeType。它能回答我的祈祷吗?还是有更好的东西?

编辑:正如Nico Schertler评论的那样,DirectX -libs中的Mesh.TextFromFont函数似乎可能就是这样。谢谢Nico!当我有时间在实践中测试时,我会更新。

1 个答案:

答案 0 :(得分:1)

Mesh.TextFromFont听起来不错,但由于我无法弄清楚如何从网格对象中获取实际的点/三角形数据,所以它没有保存。

但后来我找到了this。在此项目中,GraphicsPath用于从字形创建点路径。然后将点转换为多边形,然后使用Poly2Tri将多边形细分为三角形。

快速浏览源代码并进行一些小修改和代码剥离我得到了一个很好的.NET -dll,它有一个简单的静态函数,可以完成我需要的一切。