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

📄 def_logo.c

📁 嵌入式GUI OpenGL源代码。OpenGL是嵌入式开发中常用的一种GUI系统。
💻 C
📖 第 1 页 / 共 2 页
字号:

void def_logo(void)
{
	def_O();
	def_P();
	def_El();
	def_G();
}

void draw_O(void)
{
	int i,j,k;
    for (i=0;i<ACC;i++)
	{
		k = i+1;
		if (k>=ACC)
			k = 0;
		glBegin(GL_QUAD_STRIP);
		for (j=0;j<ACC4;j++)
		{
			glNormal3f(normal_O[j][k][0], normal_O[j][k][1], normal_O[j][k][2]);
			glVertex3f(char_O[j][k][0], char_O[j][k][1], char_O[j][k][2]);
			glNormal3f(normal_O[j][i][0], normal_O[j][i][1], normal_O[j][i][2]);
			glVertex3f(char_O[j][i][0], char_O[j][i][1], char_O[j][i][2]);
		}
		glNormal3f(normal_O[0][k][0], normal_O[0][k][1], normal_O[0][k][2]);
		glVertex3f(char_O[0][k][0], char_O[0][k][1], char_O[0][k][2]);
		glNormal3f(normal_O[0][i][0], normal_O[0][i][1], normal_O[0][i][2]);
		glVertex3f(char_O[0][i][0], char_O[0][i][1], char_O[0][i][2]);
		glEnd();
	}
}

void draw_P(void)
{
	int i,j,k;
    for (i=0;i<ACC;i++)
	{
		k = i+1;
		if (k>=ACC)
			k = 0;
		glBegin(GL_QUAD_STRIP);
		for (j=0;j<ACC2;j++)
		{
			glNormal3f(normal_P[j][k][0], normal_P[j][k][1], normal_P[j][k][2]);
			glVertex3f(char_P[j][k][0], char_P[j][k][1], char_P[j][k][2]);
			glNormal3f(normal_P[j][i][0], normal_P[j][i][1], normal_P[j][i][2]);
			glVertex3f(char_P[j][i][0], char_P[j][i][1], char_P[j][i][2]);
		}
		glNormal3f(normal_P[0][k][0], normal_P[0][k][1], normal_P[0][k][2]);
		glVertex3f(char_P[0][k][0], char_P[0][k][1], char_P[0][k][2]);
		glNormal3f(normal_P[0][i][0], normal_P[0][i][1], normal_P[0][i][2]);
		glVertex3f(char_P[0][i][0], char_P[0][i][1], char_P[0][i][2]);
		glEnd();
	}
	j = 0;
	glBegin(GL_QUAD_STRIP);
	for (i=0;i<ACC;i++)
	{
		glNormal3f(normal_P[0][i][0], normal_P[0][i][1], normal_P[0][i][2]);
		glVertex3f(char_P[0][i][0]-4.3, -1.6, 1.0*char_P[0][i][2]);
		glVertex3f(char_P[0][i][0]-4.3, 6.0, 1.0*char_P[0][i][2]);
	}
	glNormal3f(normal_P[0][0][0], normal_P[0][0][1], normal_P[0][0][2]);
	glVertex3f(char_P[0][0][0]-4.3, -1.6, 1.0*char_P[0][0][2]);
	glVertex3f(char_P[0][0][0]-4.3, 6.0, 1.0*char_P[0][0][2]);
	glEnd();
}

void draw_E(void)
{
	int i,j,k;
    for (i=0;i<ACC;i++)
	{
		k = i+1;
		if (k>=ACC)
			k = 0;
		glBegin(GL_QUAD_STRIP);
		glNormal3f(normal_P[0][k][0], normal_P[0][k][1], normal_P[0][k][2]);
		glVertex3f(char_P[0][k][0], char_P[0][k][1]+0.0, char_P[0][k][2]);
		glNormal3f(normal_P[0][i][0], normal_P[0][i][1], normal_P[0][i][2]);
		glVertex3f(char_P[0][i][0], char_P[0][i][1]+0.0, char_P[0][i][2]);
		for (j=1;j<ACC2;j++)
		{
			glNormal3f(normal_P[j][k][0], normal_P[j][k][1], normal_P[j][k][2]);
			glVertex3f(char_P[j][k][0], char_P[j][k][1], char_P[j][k][2]);
			glNormal3f(normal_P[j][i][0], normal_P[j][i][1], normal_P[j][i][2]);
			glVertex3f(char_P[j][i][0], char_P[j][i][1], char_P[j][i][2]);
		}
		glNormal3f(normal_P[0][k][0], normal_P[0][k][1], normal_P[0][k][2]);
		glVertex3f(char_P[0][k][0], char_P[0][k][1]-0.4, char_P[0][k][2]);
		glNormal3f(normal_P[0][i][0], normal_P[0][i][1], normal_P[0][i][2]);
		glVertex3f(char_P[0][i][0], char_P[0][i][1]-0.4, char_P[0][i][2]);
		glEnd();
	}

	glBegin(GL_QUAD_STRIP);
	j = ACC2*3/4;
	for (i=0;i<ACC;i++)
	{
		glNormal3f(normal_P[j][i][0], normal_P[j][i][1], normal_P[j][i][2]);
		glVertex3f(-2.0, char_P[j][i][1]+2.55, 1.0*char_P[j][i][2]);
		glVertex3f(2.0,  char_P[j][i][1]+2.55, 1.0*char_P[j][i][2]);
	}
	glNormal3f(normal_P[j][0][0], normal_P[j][0][1], normal_P[j][0][2]);
	glVertex3f(-2.0, char_P[j][0][1]+2.55, 1.0*char_P[j][0][2]);
	glVertex3f(2.0,  char_P[j][0][1]+2.55, 1.0*char_P[j][0][2]);
	glEnd();
}

void draw_El(void)
{
	int i,j,k;
	for (i=0;i<ACC;i++)
	{
		k = i+1;
		if (k>=ACC)
			k = 0;
		glBegin(GL_QUAD_STRIP);
		for (j=0;j<=ACC3;j++)
		{
			glNormal3f(normal_El[j][k][0], normal_El[j][k][1], normal_El[j][k][2]);
			glVertex3f(char_El[j][k][0], char_El[j][k][1], char_El[j][k][2]);
			glNormal3f(normal_El[j][i][0], normal_El[j][i][1], normal_El[j][i][2]);
			glVertex3f(char_El[j][i][0], char_El[j][i][1], char_El[j][i][2]);
		}
		glEnd();
	}
}

void draw_N(void)
{
	int i,j,k;
    for (i=0;i<ACC;i++)
	{
		k = i+1;
		if (k>=ACC)
			k = 0;
		glBegin(GL_QUAD_STRIP);
		for (j=0;j<=ACC2/2;j++)
		{
			glNormal3f(normal_P[j][k][0], normal_P[j][k][1], normal_P[j][k][2]);
			glVertex3f(char_P[j][k][0], char_P[j][k][1], char_P[j][k][2]);
			glNormal3f(normal_P[j][i][0], normal_P[j][i][1], normal_P[j][i][2]);
			glVertex3f(char_P[j][i][0], char_P[j][i][1], char_P[j][i][2]);
		}
		glEnd();
	}

	j = 0;
	glBegin(GL_QUAD_STRIP);
	for (i=0;i<ACC;i++)
	{
		glNormal3f(normal_P[0][i][0], normal_P[0][i][1], normal_P[0][i][2]);
		glVertex3f(char_P[0][i][0]-4.3, 0.2, 1.0*char_P[0][i][2]);
		glVertex3f(char_P[0][i][0]-4.3, 6.0, 1.0*char_P[0][i][2]);
	}
	glNormal3f(normal_P[0][0][0], normal_P[0][0][1], normal_P[0][0][2]);
	glVertex3f(char_P[0][0][0]-4.3, 0.2, 1.0*char_P[0][0][2]);
	glVertex3f(char_P[0][0][0]-4.3, 6.0, 1.0*char_P[0][0][2]);
	glEnd();
	j = 0;

	glBegin(GL_QUAD_STRIP);
	for (i=0;i<ACC;i++)
	{
		glNormal3f(normal_P[0][i][0], normal_P[0][i][1], normal_P[0][i][2]);
		glVertex3f(char_P[0][i][0], 0.2, 1.0*char_P[0][i][2]);
		glVertex3f(char_P[0][i][0], 3.4, 1.0*char_P[0][i][2]);
	}
	glNormal3f(normal_P[0][0][0], normal_P[0][0][1], normal_P[0][0][2]);
	glVertex3f(char_P[0][0][0], 0.2, 1.0*char_P[0][0][2]);
	glVertex3f(char_P[0][0][0], 3.4, 1.0*char_P[0][0][2]);
	glEnd();
}

void draw_G(void)
{
	int i,j,k;
    for (i=0;i<ACC;i++)
	{
		k = i+1;
		if (k>=ACC)
			k = 0;
		glBegin(GL_QUAD_STRIP);
		glNormal3f(normal_G[0][k][0], normal_G[0][k][1], normal_G[0][k][2]);
		glVertex3f(char_G[0][k][0], char_G[0][k][1]+1.2, char_G[0][k][2]);
		glNormal3f(normal_G[0][i][0], normal_G[0][i][1], normal_G[0][i][2]);
		glVertex3f(char_G[0][i][0], char_G[0][i][1]+1.2, char_G[0][i][2]);
		for (j=1;j<ACC4;j++)
		{
			glNormal3f(normal_G[j][k][0], normal_G[j][k][1], normal_G[j][k][2]);
			glVertex3f(char_G[j][k][0], char_G[j][k][1], char_G[j][k][2]);
			glNormal3f(normal_G[j][i][0], normal_G[j][i][1], normal_G[j][i][2]);
			glVertex3f(char_G[j][i][0], char_G[j][i][1], char_G[j][i][2]);
		}
		glEnd();
	}

	glBegin(GL_QUAD_STRIP);
	j = ACC4*3/4;
	for (i=0;i<ACC;i++)
	{
		glNormal3f(accSIN[i], 0.0, accCOS[i] );
		glVertex3f(4.0+0.9*accSIN[i], 4.0+0.9*accSIN[i], 0.9*accCOS[i] );
		glVertex3f(4.0+0.9*accSIN[i], 0.0, 0.9*accCOS[i]);
	}
	glNormal3f(accSIN[0], 0.0, accCOS[0] );
	glVertex3f(4.0+0.9*accSIN[0], 4.0+0.9*accSIN[0], 0.9*accCOS[0] );
	glVertex3f(4.0+0.9*accSIN[0], 0.0, 0.9*accCOS[0]);
	glEnd();

	glBegin(GL_QUAD_STRIP);
	j = ACC4*3/4;
	for (i=0;i<ACC;i++)
	{
		glNormal3f(0.0, accSIN[i], accCOS[i] );
		glVertex3f(4.0-0.9*accSIN[i], 4.0-0.9*accSIN[i], 0.9*accCOS[i] );
		glVertex3f(0.0, 4.0-0.9*accSIN[i], 0.9*accCOS[i]);
	}
	glNormal3f(0.0, accSIN[0], accCOS[0] );
	glVertex3f(4.0-0.9*accSIN[0], 4.0-0.9*accSIN[0], 0.9*accCOS[0] );
	glVertex3f(0.0, 4.0-0.9*accSIN[0], 0.9*accCOS[0]);
	glEnd();

	j = ACC4*3/4;
	glBegin(GL_TRIANGLE_FAN);
	glNormal3f(-1.0, 0.0, 0.0);
	glVertex3f(0.0, 4.0, 0.0);
	for (i=0;i<ACC;i++)
		glVertex3f(0.0, 4.0+0.9*accSIN[i], 0.9*accCOS[i]);
	glVertex3f(0.0, 4.0+0.9*accSIN[0], 0.9*accCOS[0]);
	glEnd();
}

void draw_L(void)
{
	int i;

	glBegin(GL_QUAD_STRIP);
	for (i=0;i<ACC;i++)
	{
		glNormal3f(accSIN[i], 0.0, accCOS[i] );
		glVertex3f(0.9*accSIN[i], 9.6, 0.9*accCOS[i]);
		glVertex3f(0.9*accSIN[i], 0.9+0.9*accSIN[i], 0.9*accCOS[i] );
	}
	glNormal3f(accSIN[0], 0.0, accCOS[0] );
	glVertex3f(0.9*accSIN[0], 9.6, 0.9*accCOS[0]);
	glVertex3f(0.9*accSIN[0], 0.9+0.9*accSIN[0], 0.9*accCOS[0] );
	glEnd();

	glBegin(GL_QUAD_STRIP);
	for (i=0;i<ACC;i++)
	{
		glNormal3f(0.0, accSIN[i], accCOS[i] );
		glVertex3f(0.9*accSIN[i], 0.9+0.9*accSIN[i], 0.9*accCOS[i] );
		glVertex3f(5.6, 0.9+0.9*accSIN[i], 0.9*accCOS[i]);
	}
	glNormal3f(0.0, accSIN[0], accCOS[0] );
	glVertex3f(0.9*accSIN[0], 0.9+0.9*accSIN[0], 0.9*accCOS[0] );
	glVertex3f(5.6, 0.9+0.9*accSIN[0], 0.9*accCOS[0]);
	glEnd();

	glBegin(GL_TRIANGLE_FAN);
	glNormal3f(1.0, 0.0, 0.0);
	glVertex3f(5.6, 0.9, 0.0);
	for (i=ACC-1;i>=0;i--)
		glVertex3f(5.6, 0.9+0.9*accSIN[i], 0.9*accCOS[i]);
	glVertex3f(5.6, 0.9+0.9*accSIN[ACC-1], 0.9*accCOS[ACC-1]);
	glEnd();
}

void draw_part(int i)
{
	glPushMatrix();
	glTranslatef(TRANS[i][0]*progress, TRANS[i][1]*progress, TRANS[i][2]*progress);
	glRotatef(ROT[i]*progress, ROTAXIS[i][0], ROTAXIS[i][1], ROTAXIS[i][2]);
	switch(i)
	{
	case 0: draw_El(); break;
	case 1: draw_O(); break;
	case 2: draw_P(); break;
	case 3: draw_E(); break;
	case 4: draw_N(); break;
	case 5: draw_G(); break;
	case 6: draw_L(); break;
	}
	glPopMatrix();
}

void draw_logo(void)
{
    groen_texture();
	glEnable(GL_CULL_FACE);
	glTranslatef(-2.8, 0.0, 0.0);

	draw_part(0);
	glTranslatef(-12.0, 4.3, 0.0);
	draw_part(1);
	glTranslatef(7.3, 0.0, 0.0);
	draw_part(2);
	glTranslatef(5.4, 0.0, 0.0);
	draw_part(3);
	glTranslatef(5.4, 0.0, 0.0);
	draw_part(4);
	glTranslatef(7.4, 0.0, 0.0);
	draw_part(5);
	glTranslatef(6.8, 0.0, 0.0);
	draw_part(6);
}

⌨️ 快捷键说明

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