用OpenGL的字符函数在屏幕上写OpenGL

在OpenGL实用程序工具包中包含了一些预定义的字符库,用来显示点阵和矢量字符。
函数 void glutBitmapCharacter(void *font,int character);显示一个GLUT位图字符。用函数glutBitmapCharacter 显示字符时,是将当前的光栅位置作为字符的左下角点,函数执行后,点阵字符装入刷新缓冲存储器,当前的光栅位置会在x坐标方向上获得一个字符宽度的增量,这样可以较轻易的生成一个水平方向的字符串。
函数 void glutStrokeCharacter(void *font,int character);显示一个GLUT矢量字符。所谓矢量,就很方便,可以接受OpenGL各种变换的控制,没有上面那个那么麻烦的规定,所以下面的代码用的这个。
函数的参数说明:font是字符的类型,又很多,去查文档。character是用ASCII码来表示你要显示是什么字符。

效果:
用OpenGL的字符函数在屏幕上写OpenGL_第1张图片

#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;
}

你可能感兴趣的:(计算机图形学学习总结)