opengl文字显示
来源:互联网 发布:淘宝退款影响信誉吗 编辑:程序博客网 时间:2024/06/05 14:45
线贴一个简单可用的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(); // 删除字体
0 0
- opengl显示文字
- OPENGL文字显示
- OpenGL文字显示
- OpenGL文字显示
- opengl文字显示
- opengl显示文字
- opengl文字显示
- OpenGL: 文字显示
- C# OpenGl 文字显示
- HelloWorld opengl文字显示
- OpenGL文字显示
- OpenGL显示文字--显示英文
- OpenGL显示文字--显示汉字
- OpenGL显示文字--显示汉字
- OpenGL显示文字--显示字符
- OpenGL显示文字--显示汉字
- OpenGL 下的文字显示
- OpenGL显示文字--指定字体
- 关于使用牛顿迭代法和二分法解方程的算法说明
- 3DSMAX和OpenGL坐标系统相反
- 删除MFC自建的单文档工程的菜单和工具栏
- 修改单文档标题
- DEBUG没错误 RELEASE有错误
- opengl文字显示
- 【转载】键盘按键对应的ASCII码值
- MFC中键盘响应
- mfc使用标准光标
- C++ 堆、栈、自由存储区、全局静态存储区和常量存储区
- VC动态轨迹画线
- OpenGL之抗锯齿 以及 线宽的设置
- Unity3d 面向对象设计思想(四)(游戏背包的处理i)
- MFC Vector使用