OpenGL 绘制字母 计算机图形学

来源:互联网 发布:京瓷2550网络扫描 编辑:程序博客网 时间:2024/05/21 09:51

OpenGL <wbr>绘制字母 <wbr>计算机图形学

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

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]);

      }为绘制位图的算法,其中的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-windowcolor 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 displaywindow.

   //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 displaywindow.

   init ( );                           // Execute initialization procedure.

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

   glutMainLoop ( );

   return 0;                // Display everything and wait.

}