⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 draw_logo.c

📁 嵌入式GUI OpenGL源代码。OpenGL是嵌入式开发中常用的一种GUI系统。
💻 C
📖 第 1 页 / 共 2 页
字号:
  
  glEnable(GL_NORMALIZE);
  
  glBegin(GL_TRIANGLE_STRIP);
  glNormal3fv(dcp[0]); glVertex3fv(dcp[0]);
  glNormal3fv(dcp[0]);
  glVertex3fv(dcp[1]);
  glNormal3fv(dcp[2]); glVertex3fv(dcp[2]);
  glNormal3fv(dcp[2]);
  glVertex3fv(dcp[3]);
  glNormal3fv(dcp[4]); glVertex3fv(dcp[4]);
  glNormal3fv(dcp[4]);
  glVertex3fv(dcp[5]);
  glNormal3fv(dcp[6]); glVertex3fv(dcp[6]);
  glNormal3fv(dcp[6]);
  glVertex3fv(dcp[7]);
  glNormal3fv(dcp[8]); glVertex3fv(dcp[8]);
  glNormal3fv(dcp[8]);
  glVertex3fv(dcp[9]);
  glNormal3fv(dcp[10]); glVertex3fv(dcp[10]);
  glNormal3fv(dcp[10]);
  glVertex3fv(dcp[11]);
  glNormal3fv(dcp[12]); glVertex3fv(dcp[12]);
  glNormal3fv(dcp[12]);
  glVertex3fv(dcp[13]);
  glNormal3fv(dcp[14]); glVertex3fv(dcp[14]);
  glNormal3fv(dcp[14]);
  glVertex3fv(dcp[15]);
  glNormal3fv(dcp[16]); glVertex3fv(dcp[16]);
  glNormal3fv(dcp[16]);
  glVertex3fv(dcp[17]);
  glEnd();
}

static void draw_elbow(void) {
  
  glBegin(GL_TRIANGLE_STRIP);
  glNormal3fv(en[0][0]); glVertex3fv(ep[0][0]);
  glNormal3fv(en[1][0]); glVertex3fv(ep[1][0]);
  glNormal3fv(en[0][1]); glVertex3fv(ep[0][1]);
  glNormal3fv(en[1][1]); glVertex3fv(ep[1][1]);
  glNormal3fv(en[0][2]); glVertex3fv(ep[0][2]);
  glNormal3fv(en[1][2]); glVertex3fv(ep[1][2]);
  glNormal3fv(en[0][3]); glVertex3fv(ep[0][3]);
  glNormal3fv(en[1][3]); glVertex3fv(ep[1][3]);
  glNormal3fv(en[0][4]); glVertex3fv(ep[0][4]);
  glNormal3fv(en[1][4]); glVertex3fv(ep[1][4]);
  glNormal3fv(en[0][5]); glVertex3fv(ep[0][5]);
  glNormal3fv(en[1][5]); glVertex3fv(ep[1][5]);
  glNormal3fv(en[0][6]); glVertex3fv(ep[0][6]);
  glNormal3fv(en[1][6]); glVertex3fv(ep[1][6]);
  glNormal3fv(en[0][7]); glVertex3fv(ep[0][7]);
  glNormal3fv(en[1][7]); glVertex3fv(ep[1][7]);
  glNormal3fv(en[0][8]); glVertex3fv(ep[0][8]);
  glNormal3fv(en[1][8]); glVertex3fv(ep[1][8]);
  glEnd();
  glBegin(GL_TRIANGLE_STRIP);
  glNormal3fv(en[1][0]); glVertex3fv(ep[1][0]);
  glNormal3fv(en[2][0]); glVertex3fv(ep[2][0]);
  glNormal3fv(en[1][1]); glVertex3fv(ep[1][1]);
  glNormal3fv(en[2][1]); glVertex3fv(ep[2][1]);
  glNormal3fv(en[1][2]); glVertex3fv(ep[1][2]);
  glNormal3fv(en[2][2]); glVertex3fv(ep[2][2]);
  glNormal3fv(en[1][3]); glVertex3fv(ep[1][3]);
  glNormal3fv(en[2][3]); glVertex3fv(ep[2][3]);
  glNormal3fv(en[1][4]); glVertex3fv(ep[1][4]);
  glNormal3fv(en[2][4]); glVertex3fv(ep[2][4]);
  glNormal3fv(en[1][5]); glVertex3fv(ep[1][5]);
  glNormal3fv(en[2][5]); glVertex3fv(ep[2][5]);
  glNormal3fv(en[1][6]); glVertex3fv(ep[1][6]);
  glNormal3fv(en[2][6]); glVertex3fv(ep[2][6]);
  glNormal3fv(en[1][7]); glVertex3fv(ep[1][7]);
  glNormal3fv(en[2][7]); glVertex3fv(ep[2][7]);
  glNormal3fv(en[1][8]); glVertex3fv(ep[1][8]);
  glNormal3fv(en[2][8]); glVertex3fv(ep[2][8]);
  glEnd();
  glBegin(GL_TRIANGLE_STRIP);
  glNormal3fv(en[2][0]); glVertex3fv(ep[2][0]);
  glNormal3fv(en[3][0]); glVertex3fv(ep[3][0]);
  glNormal3fv(en[2][1]); glVertex3fv(ep[2][1]);
  glNormal3fv(en[3][1]); glVertex3fv(ep[3][1]);
  glNormal3fv(en[2][2]); glVertex3fv(ep[2][2]);
  glNormal3fv(en[3][2]); glVertex3fv(ep[3][2]);
  glNormal3fv(en[2][3]); glVertex3fv(ep[2][3]);
  glNormal3fv(en[3][3]); glVertex3fv(ep[3][3]);
  glNormal3fv(en[2][4]); glVertex3fv(ep[2][4]);
  glNormal3fv(en[3][4]); glVertex3fv(ep[3][4]);
  glNormal3fv(en[2][5]); glVertex3fv(ep[2][5]);
  glNormal3fv(en[3][5]); glVertex3fv(ep[3][5]);
  glNormal3fv(en[2][6]); glVertex3fv(ep[2][6]);
  glNormal3fv(en[3][6]); glVertex3fv(ep[3][6]);
  glNormal3fv(en[2][7]); glVertex3fv(ep[2][7]);
  glNormal3fv(en[3][7]); glVertex3fv(ep[3][7]);
  glNormal3fv(en[2][8]); glVertex3fv(ep[2][8]);
  glNormal3fv(en[3][8]); glVertex3fv(ep[3][8]);
  glEnd();
  glBegin(GL_TRIANGLE_STRIP);
  glNormal3fv(en[3][0]); glVertex3fv(ep[3][0]);
  glNormal3fv(en[4][0]); glVertex3fv(ep[4][0]);
  glNormal3fv(en[3][1]); glVertex3fv(ep[3][1]);
  glNormal3fv(en[4][1]); glVertex3fv(ep[4][1]);
  glNormal3fv(en[3][2]); glVertex3fv(ep[3][2]);
  glNormal3fv(en[4][2]); glVertex3fv(ep[4][2]);
  glNormal3fv(en[3][3]); glVertex3fv(ep[3][3]);
  glNormal3fv(en[4][3]); glVertex3fv(ep[4][3]);
  glNormal3fv(en[3][4]); glVertex3fv(ep[3][4]);
  glNormal3fv(en[4][4]); glVertex3fv(ep[4][4]);
  glNormal3fv(en[3][5]); glVertex3fv(ep[3][5]);
  glNormal3fv(en[4][5]); glVertex3fv(ep[4][5]);
  glNormal3fv(en[3][6]); glVertex3fv(ep[3][6]);
  glNormal3fv(en[4][6]); glVertex3fv(ep[4][6]);
  glNormal3fv(en[3][7]); glVertex3fv(ep[3][7]);
  glNormal3fv(en[4][7]); glVertex3fv(ep[4][7]);
  glNormal3fv(en[3][8]); glVertex3fv(ep[3][8]);
  glNormal3fv(en[4][8]); glVertex3fv(ep[4][8]);
  glEnd();
  glBegin(GL_TRIANGLE_STRIP);
  glNormal3fv(en[4][0]); glVertex3fv(ep[4][0]);
  glNormal3fv(en[5][0]); glVertex3fv(ep[5][0]);
  glNormal3fv(en[4][1]); glVertex3fv(ep[4][1]);
  glNormal3fv(en[5][1]); glVertex3fv(ep[5][1]);
  glNormal3fv(en[4][2]); glVertex3fv(ep[4][2]);
  glNormal3fv(en[5][2]); glVertex3fv(ep[5][2]);
  glNormal3fv(en[4][3]); glVertex3fv(ep[4][3]);
  glNormal3fv(en[5][3]); glVertex3fv(ep[5][3]);
  glNormal3fv(en[4][4]); glVertex3fv(ep[4][4]);
  glNormal3fv(en[5][4]); glVertex3fv(ep[5][4]);
  glNormal3fv(en[4][5]); glVertex3fv(ep[4][5]);
  glNormal3fv(en[5][5]); glVertex3fv(ep[5][5]);
  glNormal3fv(en[4][6]); glVertex3fv(ep[4][6]);
  glNormal3fv(en[5][6]); glVertex3fv(ep[5][6]);
  glNormal3fv(en[4][7]); glVertex3fv(ep[4][7]);
  glNormal3fv(en[5][7]); glVertex3fv(ep[5][7]);
  glNormal3fv(en[4][8]); glVertex3fv(ep[4][8]);
  glNormal3fv(en[5][8]); glVertex3fv(ep[5][8]);
  glEnd();
  glBegin(GL_TRIANGLE_STRIP);
  glNormal3fv(en[5][0]); glVertex3fv(ep[5][0]);
  glNormal3fv(en[6][0]); glVertex3fv(ep[6][0]);
  glNormal3fv(en[5][1]); glVertex3fv(ep[5][1]);
  glNormal3fv(en[6][1]); glVertex3fv(ep[6][1]);
  glNormal3fv(en[5][2]); glVertex3fv(ep[5][2]);
  glNormal3fv(en[6][2]); glVertex3fv(ep[6][2]);
  glNormal3fv(en[5][3]); glVertex3fv(ep[5][3]);
  glNormal3fv(en[6][3]); glVertex3fv(ep[6][3]);
  glNormal3fv(en[5][4]); glVertex3fv(ep[5][4]);
  glNormal3fv(en[6][4]); glVertex3fv(ep[6][4]);
  glNormal3fv(en[5][5]); glVertex3fv(ep[5][5]);
  glNormal3fv(en[6][5]); glVertex3fv(ep[6][5]);
  glNormal3fv(en[5][6]); glVertex3fv(ep[5][6]);
  glNormal3fv(en[6][6]); glVertex3fv(ep[6][6]);
  glNormal3fv(en[5][7]); glVertex3fv(ep[5][7]);
  glNormal3fv(en[6][7]); glVertex3fv(ep[6][7]);
  glNormal3fv(en[5][8]); glVertex3fv(ep[5][8]);
  glNormal3fv(en[6][8]); glVertex3fv(ep[6][8]);
  glEnd();
}

static void bend_forward(void) {
  
  glTranslatef(0.0,  1.000000,  0.0);
  glRotatef (0.1 * (900), 1.0, 0.0, 0.0);
  glTranslatef(0.0,  -1.000000,  0.0);
}

static void bend_left(void) {
  glRotatef (0.1 * (-900), 0.0, 0.0, 1.0);
  glTranslatef(0.0, 1.000000, 0.0);
  glRotatef (0.1 * (900), 1.0, 0.0, 0.0);
  glTranslatef(0.0, -1.000000, 0.0);
}

static void bend_right(void) {
  glRotatef (0.1 * (900), 0.0, 0.0, 1.0);
  glTranslatef(0.0, 1.000000, 0.0);
  glRotatef (0.1 * (900), 1.0, 0.0, 0.0);
  glTranslatef(0.0, -1.000000, 0.0);
}

void draw_logo(void) {
  
  glCallList( MAT_LOGO); 
  
  glTranslatef(5.500000,  -3.500000,  4.500000);
  
  glTranslatef(0.0,  0.0,  -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0,  0.0,  -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0,  0.0,  -5.000000);
  draw_single_cylinder();
  bend_right();
  draw_elbow();
  glTranslatef(0.0,  0.0,  -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0,  0.0,  -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0,  0.0,  -5.000000);
  draw_single_cylinder();
  bend_left();
  draw_elbow();
  glTranslatef(0.0,  0.0,  -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0,  0.0,  -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0,  0.0,  -5.000000);
  draw_single_cylinder();
  bend_right();
  draw_elbow();
  glTranslatef(0.0,  0.0,  -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0,  0.0,  -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0,  0.0,  -5.000000);
  draw_single_cylinder();
  bend_left();
  draw_elbow();
  glTranslatef(0.0,  0.0,  -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0,  0.0,  -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0,  0.0,  -5.000000);
  draw_single_cylinder();
  bend_right();
  draw_elbow();
  glTranslatef(0.0,  0.0,  -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0,  0.0,  -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0,  0.0,  -5.000000);
  draw_single_cylinder();
  bend_left();
  draw_elbow();
  
  glDisable(GL_NORMALIZE);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -