当前位置:文档之家› 06-OpenGL字体显示

06-OpenGL字体显示

OpenGL 字体显示
在OpenGL中,提供了预定义的字库,可以满足一般的需求,用户也可以自定义字库,OpenGL红宝书中有自定义字库的详细过程。

OpenGL预定义字库中提供了位图字符和矢量字符两种显示方式
V oid glutBitmapCharacter(void *font,int character); //位图字符
其中font是GLUT常量,指定点阵字库,如:
GLUT_BITMAP_8_BY_13,GLUT_BITMAP_9_BY_15,
V oid glutStrokeCharacter(void *font,int character); //矢量字符
Font 的取值有glut_stroke_roman 等间距Roman Simplex 字体,glut_stroke_mono_roman 单一间距Roman Simplex 字体。

本例演示了矢量字符的两种间距以及24磅位图字符的显示。

显示效果:
代码:
#include <windows.h>
#include <glut.h>
#include <gl.h>
int width = 200,height = 100;
void init(){
glClearColor(0,0,0,0);
}
void Reshape(int w,int h){
width=w;
height=h;
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,width,0.0,height);
}
void display(){
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f,1.0f,0.0f);
glLineWidth(2.0); //设置笔画的大小
glTranslatef(0,250,0); //设置字符显示的位置,否则贴底显示不能完全显示部分字符
glutStrokeCharacter(GLUT_STROKE_ROMAN,79); //输出字体为
GLUT_STROKE_ROMAN的OpenGL,从大写O开始,ASSCI码为79
glutStrokeCharacter(GLUT_STROKE_ROMAN,112);
glutStrokeCharacter(GLUT_STROKE_ROMAN,101);
glutStrokeCharacter(GLUT_STROKE_ROMAN,110);
glutStrokeCharacter(GLUT_STROKE_ROMAN,71);
glutStrokeCharacter(GLUT_STROKE_ROMAN,76);
glTranslatef(-460,-150,0); //调整下一行显示的位置
glutStrokeCharacter(GLUT_STROKE_MONO_ROMAN,79); //输出字体为
GLUT_STROKE_MONO_ROMAN的OpenGL,从大写O开始,ASSCI码为79 glutStrokeCharacter(GLUT_STROKE_MONO_ROMAN,112);
glutStrokeCharacter(GLUT_STROKE_MONO_ROMAN,101);
glutStrokeCharacter(GLUT_STROKE_MONO_ROMAN,110);
glutStrokeCharacter(GLUT_STROKE_MONO_ROMAN,71);
glutStrokeCharacter(GLUT_STROKE_MONO_ROMAN,76);
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'O'); //显示24磅的times Roman 点阵字体
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'p');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'e');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'n');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'G');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'L');
glutSwapBuffers();
}
int main(int argc, char* argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB );
glutInitWindowSize( 650, 400 );
glutInitWindowPosition( 100,100 );
glutCreateWindow("show OpenGL"); //´°¿ÚÃûΪ"rectangle"
init();
glutDisplayFunc(display);
glutReshapeFunc(Reshape);
glutMainLoop();
return 0;
}。

相关主题