在OpenGL实用程序工具包中包含了一些预定义的字符库,用来显示点阵和矢量字符。
函数 void glutBitmapCharacter(void *font,int character);
显示一个GLUT位图字符。用函数glutBitmapCharacter 显示字符时,是将当前的光栅位置作为字符的左下角点,函数执行后,点阵字符装入刷新缓冲存储器,当前的光栅位置会在x坐标方向上获得一个字符宽度的增量,这样可以较轻易的生成一个水平方向的字符串。
函数 void glutStrokeCharacter(void *font,int character);
显示一个GLUT矢量字符。所谓矢量,就很方便,可以接受OpenGL各种变换的控制,没有上面那个那么麻烦的规定,所以下面的代码用的这个。
函数的参数说明:font是字符的类型,又很多,去查文档。character是用ASCII码来表示你要显示是什么字符。
#include
#include
#define PI 3.1416
int winWidth=500,winHeight=500;
void myinit(void)
{
glClearColor(1.0f,1.0f,1.0f,1.0f);
}
void myReshape(int w,int h)
{
winWidth=w;
winHeight=h;
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,winWidth,0.0,winHeight);
}
//每桢OpenGL都会调用这个函数,用户应该把显示代码放在这个函数中
void display(void)
{
//设置清除屏幕的颜色,并清除屏幕和深度缓冲
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0,1.0,0.0);
//写字
glTranslatef(50,250,0);
glutStrokeCharacter(GLUT_STROKE_ROMAN,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);
glutSwapBuffers();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
//初始化OPENGL显示方式
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGBA);
//设定OPENGL窗口位置和大小
glutInitWindowSize (500, 500);
glutInitWindowPosition (100, 100);
//打开窗口
glutCreateWindow ("");
//调用初始化函数
myinit();
//设定窗口大小变化的回调函数
glutReshapeFunc(myReshape);
//开始OPENGL的循环
glutDisplayFunc(display);
glutMainLoop();
return 0;
}