您的位置:首页 > 理论基础

OpenGL 绘制字母 计算机图形学

2013-08-23 15:07 204 查看


绘制字母 计算机图形学" TITLE="OpenGL 绘制字母 计算机图形学" />


【注】算法代码如下,其中void
CharMap(void)为绘制字符的算法,其中的函数段实现了两种绘制字符的不同方法,其中:
glColor

3f(0.0,0.0,0.0);

char text[] =
{'a','A','b','B','c','C','d','D','e','E','f','F'};

glRasterPos2i(20,40);

for (int k=0;k<12;k++){


glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,text[k]);

//glutBitmapCharacter(GLUT_BITMAP_8_BY_13,text[k]);

}为绘制位图的算法,其中的glutBitmapCharacter为绘制位图的库函数,其中的第一个参数为常量,指代要绘制的字体和大小,第二个参数为要绘制的字符数组。

下面的代码段实现了上图中显示的下方比较大的且有旋转的字体:

glScalef(0.1,0.1,0.0);//控制了字体的缩放

glRotatef(300,20.0,20.0,0.0);//控制了字体的旋转

glRasterPos2i(20,40);//控制显示位置

for (int k=0;k<12;k++){


glutStrokeCharacter(GLUT_STROKE_ROMAN,text[k]);

//glutBitmapCharacter(GLUT_BITMAP_8_BY_13,text[k]);

}

源代码如下:

#include<windows.h>


#ifdef __APPLE__
#include
<GLUT/glut.h>
#else
#include
<GL/glut.h>
#endif

#include
<stdlib.h>

void init (void)
{

glClearColor (1.0, 1.0, 1.0, 0.0); // Set display-window
color to white.

glMatrixMode (GL_PROJECTION);
// Set projection parameters.

gluOrtho2D (0.0, 200.0, 0.0, 150.0);
}
void CharMap(void)
{

glClear (GL_COLOR_BUFFER_BIT); // Clear display
window.
//
glColor3f (0.0, 0.0, 0.0);
// Set line segment color to red.

glColor3f(0.0,0.0,0.0);

char text[] =
{'a','A','b','B','c','C','d','D','e','E','f','F'};

glRasterPos2i(20,40);

for (int k=0;k<12;k++){


glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,text[k]);

//glutBitmapCharacter(GLUT_BITMAP_8_BY_13,text[k]);

}

glScalef(0.1,0.1,0.0);

glRotatef(300,20.0,20.0,0.0);

glRasterPos2i(20,40);

for (int k=0;k<12;k++){


glutStrokeCharacter(GLUT_STROKE_ROMAN,text[k]);

//glutBitmapCharacter(GLUT_BITMAP_8_BY_13,text[k]);

}

glFlush();
}
int main (int argc, char** argv)
{

glutInit (&argc, argv);
// Initialize GLUT.

glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); //
Set display mode.

glutInitWindowPosition (50, 100); //
Set top-left display-window position.

glutInitWindowSize (1000, 600);
// Set display-window width and height.

glutCreateWindow ("An Example OpenGL Program"); // Create display
window.

init ( );
// Execute initialization procedure.

glutDisplayFunc (CharMap);
// Send graphics to display window.

glutMainLoop ( );

return 0;
// Display everything and wait.
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: