如何在3D对象(如球体)上绘制文本
How to draw texts on a 3D objects (such as sphere)
我在Linux平台下学习OpenGL。最近,我尝试使用glutBitmapCharacter()
创建的文本作为glu或glut提供的一些二次对象的纹理。然而,glutBitmapCharacter()
不返回一个指针,所以我不能把它喂给glTexImage2D()
。我在谷歌上搜索了很长一段时间,但我发现的都是一些与Android SDK相关的话题,我没有经验。
我所能想到的是渲染文本,并使用glReadPixels()
读取它的缓冲区,然后将其保存到一个文件。接下来,从文件中读取像素并将其引用到一个指针。最后,用这些文本作为纹理绘制3D对象(即将指针提供给glTexImage2D()
)。
然而,这有点傻。我想问的是:是否有其他替代方法?
在3D表面上应用文本对于纯OpenGL来说并不简单。GLUT没有为此提供任何工具。一个可能的选择是你实现自己的文本渲染方法,可能使用Freetype加载字形,然后用字形创建纹理,并将该纹理应用于多边形。Freetype-GL是一个很小的帮助库,如果你要这样做的话,它会提供很多便利。
另一种选择是再次将文本符号加载到纹理中,然后将它们作为几何图形的贴花应用。这样,你仍然可以在平面上模拟2D文本绘图(贴花),然后将其应用于3D对象的顶部。
相关文章:
- QPainter 将 QBrush 设置为 在 QT/C++ 中绘制文本
- 绘制文本问题
- SFML 2.4.2 - 绘制文本时出现分段错误
- 在 Qt C++ 中在自定义项委托上绘制文本时的性能问题
- 如何在透视视图中绘制文本
- Qt:用不同的字体绘制文本
- Linux绘制文本模式(无GUI,桌面)
- 使用Glstipple时,Oglft绘制文本
- 绘制文本和文本剪辑
- 有效地在 QPainterPath 周围绘制文本
- DirectWrite GDI 互操作:使用"IDWriteFontFace"绘制文本的简单方法
- DrawStatustext仅在后续呼叫上不在第一次呼叫上绘制文本
- SFML 在绘制文本时崩溃
- QPainter 未正确绘制文本
- 当我使用 DirectWrite 在 GDI hdc 上绘制文本时,如何设置透明背景
- 如何在 DirectWrite 中使用默认 UI 字体绘制文本
- Win32 绘制文本在重建后仍然存在
- 如何使用SKIA SKBITMAP在EGL纹理上绘制文本
- Windows 8 现代 UI 应用程序和 DirectX.如何绘制文本
- 在没有项目的情况下使用 Dev c++ 在窗口中绘制文本