我如何在OpenGL程序中显示文本? 我正在使用MinGW,但网上的教程使用的是特定于Windows开发的库(以HDc作为参数)。
答案 0 :(得分:1)
OpenGL没有内置任何字体渲染。在大多数平台上,您可以调用特定于平台的调用来在OpenGL显示(或其周围)上呈现文本,这可能就是那些教程正在做的事情。如果您希望文本成为OpenGL场景的一部分,则需要自己编辑。
一种常见的方法是使用现有的字体渲染库(例如,freetype),将文本渲染为位图,并将其用作纹理。
如果需要渲染大量文本,最好将单个字形转换为纹理;渲染一个字形,然后采用一个四边形(你可以使用通常的优化使其快速渲染)。
您可以使用预先渲染的位图,而不是TTF / OTF字体;这样就无需在运行时使用字体渲染库,但它不允许您动态更改字体大小(尽管您当然可以渲染文本的拉伸实例)。
另一种选择:libcairo似乎有一个(实验性的)OpenGL后端,所以也许值得一试。
答案 1 :(得分:1)
尽管你有alreydy接受了答案,但我想指出你:
http://www.angelcode.com/products/bmfont/
我在我的库中使用生成的字体,它非常容易集成,您不必使您的应用程序依赖于其他库。它生成一个带有字体的纹理和一个要解析的文件。 然后在绘制任何字体之前将纹理绑定到opengl,然后使用该字形的子纹理坐标为每个字形绘制四边形(精灵)。您可以从生成的文件中获取它们。
请参阅我的实施:
http://code.google.com/p/nightlight2d/source/browse/trunk/NightLightDLL/NLFont.cpp
随意使用它。 愿来源与你同在。