对于2D渲染,您可以将投影矩阵视为画布,将模型视图视为文本位置。您需要设置如下的正交投影:
glOrtho(0.0F, 窗口宽度, 0.0F, 窗口高度, -1.0F, 1.0F);
使用此投影,每个单元表示一个像素(glTranslate2f(120.0, 100.0)会将您的文本定位在像素(120,100)处)。此投影将(0,0)映射到屏幕左下角。如果要将其映射到左上角,则可以执行以下操作:
glOrtho(0.0F, 窗口宽度, 窗口高度, 0.0F, -1.0F, 1.0F);
至于如何呈现文本,OpenGL默认不支持它,这意味着您必须创建一个字体呈现库或使用现有的库。在这之前,您需要考虑文本呈现的需求:是平面的还是3D的?它是静态的还是可变换的(缩放、旋转等)。
在这里,你可以找到一篇关于OpenGL文本渲染技术的调查,其中包括优缺点和库:
http://www.opengl.org/archives/resources/features/fontsurvey/
我开始使用FTGL来渲染TTF字体,但是这个库破坏了我的游戏性能。所以我决定实现自己的字体库,并选择了纹理字体,它们并不比TTF好,但对我的需求来说还可以。
我使用了这个程序:http://www.angelcode.com/products/bmfont/
它可以将TTF字体导出为纹理和文件描述符,其中包含每个字母在纹理中的位置、大小和填充,你将用它来进行渲染。
希望这有所帮助。