|
|
在FTGL的基础上写了一个在OpenGL下显示TureType文字的库——TTGLFont。
主要是改进了在初次使用每个字符时把字符缓存到纹理中,通过绘制带纹理的四边形来显示文字。文字渲染引擎使用的是FreeType2.3.5。支持UNICODE。支持字符串中的换行符换行。目前显示文字的速度比FTGL有一定提高。接下来准备用vertex arry来进一步提高文字绘制速度。
压缩包里包括源代码和一个演示程序,对比FTGL和TTGLFont的效果。程序默认使用系统目录的\fonts\ARIALUNI.TTF 字体文件,也可以使用命令行参数来指定使用的字体文件。不过使用simsun.ttc字体时由于FTGL的bug,只能正常显示TTGLFont字体,而FTGL会乱掉。
这个库使用比较简单:
//包含头文件和FreeType库文件。
#include "TTGLFont\include\TTGLFont.h"
#pragma comment( lib, "freetype.lib" )
//在建立好OpenGL环境后初始化TTGLFont。
TTGLFont font=new TTGLFont("c:\windows\fonts\ARIALUNI.TTF",18); //设置字体文件和字号
//设置OpenGL的alpha混合和纹理环境。
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, 0);
glEnable(GL_BLEND);
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);
//设置投影模式。
glMatrixMode( GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, win_width, win_height, 0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
//绘制文字。
font->Render(L"render fonts in OpenGL\n在OpenGL中绘制文字"); //中文使用UNICODE。
//还可以设置行间距。
font->LineOffset(5); //默认行间距+LineOffset。
|
|