OpenGL文字显示

来源:互联网 发布:linux命令退出编辑 编辑:程序博客网 时间:2024/06/06 05:42

线贴一个简单可用的opengl文字显示调用函数

opengl文字显示大致三步:

1,创建字体

2,输出打印

3,删除字体

1,创建字体的函数:

/* * BuildFont *创建位图字体 */GLvoid BuildFont(GLvoid){HFONT font;// 字体句柄HFONT oldfont;base = glGenLists(256);// 创建96个显示列表font = CreateFont(-24,// 字体高度0,// 字体宽度0,// 字体的旋转角度0,// 字体底线的旋转角度FW_BOLD,// 字体重量FALSE,// 是否使用斜体FALSE,// 是否使用下划线FALSE,// 是否使用删除线ANSI_CHARSET,// 设置字符集OUT_TT_PRECIS,// 输出精度CLIP_DEFAULT_PRECIS,// 剪裁精度ANTIALIASED_QUALITY,// 输出质量FF_DONTCARE|DEFAULT_PITCH,"Courier New");// 字体名称oldfont = (HFONT)SelectObject(wglGetCurrentDC(), font);// 选择我们需要的字体wglUseFontBitmaps(wglGetCurrentDC(), 0, 256, base);// 创建96个显示列表,绘制从ASCII码为32-128的字符SelectObject(wglGetCurrentDC(), oldfont);DeleteObject(font);}

其中base是一个全局变量

GLuint base;  // 绘制字体的显示列表的开始位置

2,打印函数

/* * glPrint *自定义GL输出函数 */void glPrint(const char *pstr){glPushAttrib(GL_LIST_BIT);// 把显示列表属性压入属性堆栈glListBase(base - 0);// 设置显示列表的基础值glCallLists(strlen(pstr), GL_UNSIGNED_BYTE, pstr);// 调用显示列表绘制字符串glPopAttrib();// 弹出属性堆栈}

3,删除字体

GLvoid KillFont(GLvoid){glDeleteLists(base, 256); }

在InitGL()中添加创建字体的代码:

BuildFont();

在DrawGLScene()中添加代码:

 glTranslatef(0.0f, 0.0f, -1.0f);
 glColor3f(0.0f, 1.0f, 0.0f); // 颜色
 glRasterPos2f(-0.4f, 0.30f); // 输出位置
 glPrint("Active OpenGL Text With NeHe - %7.2f", cnt1);  // 输出文字到屏幕
在KillGLWindow()中添加删除字体的代码:

KillFont();  // 删除字体


以上是一个可以直接使用的opengl显示文字的相关函数。

原创粉丝点击