字符图元
OpenGL中有两种字符图元,位图字体与轮廓字体。
位图字体就相当于用位图来存储每个字体,因此会显得更加不平滑,但是画起来较快。
轮廓字体则是描述字符的边界,因此放大缩小什么的也仍然很平滑,但是画起来较慢。除此之外,轮廓字体还可以放到各种场景下观察、缩放等等。
对于画轮廓字体,不能单纯地移动光栅位置来画(还没学到吧。。)
#include<Windows.h>
#include<GL/glut.h>
#include<cstring>
const char s[] = "hello world";
void drawString()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3d(0.1, 0.5, 0.8);
const int l = strlen(s);
//将光栅调到指定位置后,画位图字符
glRasterPos2i(400, 300);
for (int i = 0; i < l; ++i)
{
glutBitmapCharacter(GLUT_BITMAP_8_BY_13, s[i]);
}
//这个不能直接调光栅,后续会有介绍
//画出轮廓字符,更清晰、但更慢。。
/*for (int i = 0; i < l; ++i)
{
glutStrokeCharacter(GLUT_STROKE_ROMAN, s[i]);
}
*/
glFlush();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(800, 600);
glutCreateWindow("String");
glClearColor(1.0, 1.0, 1.0, 0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0, 800.0, 0.0, 600.0);
glutDisplayFunc(drawString);
glutMainLoop();
}