使用 pyopengl 绘制突出的 3d 文本?

Draw extruded 3d text with pyopengl?

使用 pyopengl 绘制 3d 文本的最佳方法是什么,最好使用现代 opengl?

似乎有很多例子,但大多是老式的 opengl 而不是 python

  1. 首先你需要一个需要字体的文本大纲。 在 windows 上,您可以使用 WinGDI fonts by creating a dummy context, selecting a created font on it and getting outlines of every character. For Truetype you load glyphs into the face and simply access 他们的轮廓。
  2. 对于 3D 文本的正面和背面,您需要将 outlines/contours 转换为三角形。要么使用旧的 GLU tesselator, the relative new tesselation shader of OpenGL 4 or a geometry library like CGAL。然后简单地为前面画三角形,然后再为后面画一些额外的深度。
  3. 对于边,您只需在轮廓 segments/lines 后面跨越矩形,其​​中 高度 等于您希望的文本深度 - 这些是您的文本边。您可以简单地使用深度向量并在之后变换所有内容,或者计算具有 2 段的正交向量。

你注意到这一切都可能很昂贵,所以不要犹豫,尽可能多地缓存。

我参考了 C 源代码,因为我对它们更熟悉,但我敢打赌有 python 等价物来移植我的解释。