OPENGL绘制文字
2014-03-05 11:00
288 查看
OPENGL没有提供直接绘制文字的功能,需要借助于操作系统。
用OPENGL绘制文字比较常见的方法是利用显示列表。创建一系列显示列表,每个字符对应一个列表编号。例如,'A'对应列表编号1000+'A',‘B’对应列表编号1000+'B',以此类推。绘制一个字符串时,依次调用字符串中每个字符所对应的列表编号。
在Windows操作系统上,可以使用wglUseFontBitmaps函数来批量的产生显示字符用的显示列表。
下面给出一个示例代码。该代码时在OPENGL红宝书示例程序的基础上进行修改,只做示例之用。在实际的程序中使用时,需要根据具体的需求进行修改。
运行此程序的环境配置参考OPENGL红宝书中示例程序的环境配置。
用OPENGL绘制文字比较常见的方法是利用显示列表。创建一系列显示列表,每个字符对应一个列表编号。例如,'A'对应列表编号1000+'A',‘B’对应列表编号1000+'B',以此类推。绘制一个字符串时,依次调用字符串中每个字符所对应的列表编号。
在Windows操作系统上,可以使用wglUseFontBitmaps函数来批量的产生显示字符用的显示列表。
下面给出一个示例代码。该代码时在OPENGL红宝书示例程序的基础上进行修改,只做示例之用。在实际的程序中使用时,需要根据具体的需求进行修改。
运行此程序的环境配置参考OPENGL红宝书中示例程序的环境配置。
#include <windows.h> #include <GL/gl.h> #include <GL/glu.h> #include <GL/freeglut.h> #define MAX_CHAR 128 GLuint TextFont; void XPrintString(char *s) { glPushAttrib (GL_LIST_BIT); //调用每个字符对应的显示列表,绘制每个字符 for(; *s!='\0'; ++s) glCallList(TextFont + *s); glPopAttrib (); } void display(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0); glRasterPos3f(0.5, 0.5, 0.0); XPrintString("hello!"); glFlush(); } void init(void) { glClearColor(0.0, 0.0, 0.0, 0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); //申请MAX_CHAR个连续的显示列表编号 TextFont = glGenLists(MAX_CHAR); //把每个字符的绘制命令都装到对应的显示列表中 wglUseFontBitmaps(wglGetCurrentDC(), 0, MAX_CHAR, TextFont); } int main(int argc, char ** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(250, 250); glutInitWindowPosition(100, 100); glutCreateWindow("Hello "); init(); glutDisplayFunc(display); glutMainLoop(); return 0; }
相关文章推荐
- C#+OpenGL+FreeType显示3D文字(3) - 用PointSprite绘制文字
- OPENGL绘制文字
- 【OpenGL】使用FreeType库加载字体并在GL中绘制文字
- OpenGl第三章后续,纹理,绘制图片,文字
- OpenGL笔记16 文字绘制
- GDI文字绘制和windows下opengl文字绘制小结
- OpenGL中的3D文字绘制
- opengl绘制文字
- C#+OpenGL+FreeType显示3D文字(2) - 用GLSL+VBO绘制文字
- opengl中绘制文字的时候遇到了乱码问题
- linux环境下基于opengl的3*3可控魔方绘制
- Golang 图片上绘制文字
- Android游戏快速入门(二):绘制动态文字和图片
- 使用OpenGL绘制弹簧
- opencv 2.x学习笔记(十)随机数发生器、绘制文字
- Unity中使用GL在Camera上绘制文字
- android平台使用Opengl实现点、线、三角形的绘制
- IOS Quartz 各种绘制图形用法---实现画图片、写文字、画线、椭圆、矩形、棱形等
- Android drawText() 绘制多行文字
- CSharpGL(6)在OpenGL中绘制UI元素