在标准 OGL 中绘制文本最快、最简单的方法是什么?
6 回答
文本居然被OpenGl牵扯进来
看看NeHe的这个例子
OpenGL 不支持绘制文本。您需要使用一些库将文本渲染为位图,然后您可以使用 OpenGL 来渲染位图。Freetype2 和 Pango 是很好的跨平台低级解决方案。ClanLib 等游戏编程库和 Qt 等 GUI 库也可能有自己的方式来呈现文本。
这取决于您正在使用的框架,就像我上面所说的那样。例如,SDL 是多平台的,可以使用 SDL 中的特殊库绘制文本:http: //gameprogrammingtutorials.blogspot.com/2010/02/sdl-tutorial-series-part-6-displaying.html
如果您使用 glut,请查看以下函数:glutStrokeString、glutBitmapString in glut documentation..
使用纹理。每个字符都是一个带纹理的四边形,纹理坐标包含特定字符。
然后,您可以使用显示列表进行仿射、在运行时生成表示字符串的栅格、勾画、混合...
您可以使用特定于平台的 OpenGL API(即 wglUseFontOutlines),但我认为自 OpenGL 3.2 起它将被弃用。
OpenGL 不直接支持文本渲染。您有多种选择:
- 一些操作系统绑定,例如WGL和 AGL,确实具有有限的字体支持(大多数情况下它们将系统字体渲染为位图以在 Open GL 中使用)。
- GLUT工具包(和类似的工具包)也有一些字体支持(位图和笔画)。
- 您可以使用诸如FreeType之类的库(主要是字体渲染器,您仍可能希望使用Pango之类的东西进行文本布局)。
- 您可以使用简单的纹理四边形(这实际上是 Quake 1 所做的)。
取决于您使用的框架。一种常见的方法是将文本渲染到屏幕外缓冲区并将其用作纹理。