如何在3D对象(如球体)上绘制文本

时间:2014-07-25 13:59:09

标签: c++ c opengl

我在Linux平台下学习OpenGL。最近,我尝试使用glutBitmapCharacter()创建的文本作为glu或glut提供的一些二次对象的纹理。但是,glutBitmapCharacter()不会返回指针,因此我无法将其提供给glTexImage2D()。我已经谷歌了很长一段时间,但我找到的只是与Android SDK相关的一些话题,我没有经验。

我能想到的是使用glReadPixels()渲染文本并从缓冲区中读取它,然后将其保存到文件中。接下来,从文件中读取像素并将其引用到指针。最后,使用这些文本作为纹理绘制3D对象(即将指针提供给glTexImage2D())。

但是,这有点傻。我想问的是:还有其他替代方法吗?

1 个答案:

答案 0 :(得分:1)

在纯粹的OpenGL上,在3D表面上应用文本并非易事。 GLUT不提供任何工具。一种可能的选择是您实现自己的文本呈现方法,可能使用Freetype加载字形,然后使用字形创建纹理并将该纹理应用于多边形。 Freetype-GL是一个很小的帮助程序库,如果你这样做的话可以提供很多帮助。

另一种选择是再次将文本字形加载到纹理中,然后将它们作为贴图应用于几何体。这样,您仍然可以在平面(贴花)中模拟2D文本绘图,然后将其应用于3D对象的顶部。