السلام
ممكن احد يشرح الاكواد الي موجوده بالبرنامج وشكرا
#include <glut.h>
#include <stdio.h>
#include <math.h>
GLfloat rtex ,i;
GLfloat light0_ambient[] =
{0.2, 0.2, 0.2, 1.0};
GLfloat light0_diffuse[] =
{0.0, 0.0, 0.0, 1.0};
GLfloat light1_diffuse[] =
{1.0, 1.0, 1.0, 1.0};
GLfloat light1_position[] =
{1.0, 1.0, 1.0, 0.0};
GLfloat light2_diffuse[] =
{0.0, 0.88, 0.45, 1.0};
GLfloat light2_position[] =
{-1.0, -1.0, 1.0, 0.0};
float s = 0.0,tick;
GLfloat angle1 = 0.0, angle2 = 0.0,angle=0.0;
void output(GLfloat x, GLfloat y, char *text)
{
char *p;
glPushMatrix();
glTranslatef(x, y, 0);
for(p = text; *p; p++)
glutStrokeCharacter(GLUT_STROKE_ROMAN, *p);
glPopMatrix();
}
void display(void)
{
static GLfloat amb[] =
{0.4, 0.4, 0.4, 0.0};
static GLfloat dif[] =
{1.0, 1.0, 1.0, 0.0};
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_LIGHT1);
glDisable(GL_LIGHT2);
amb[3] = dif[3] = cos(s) / 2.0 + 0.5;
glMaterialfv(GL_FRONT, GL_AMBIENT, amb);
glMaterialfv(GL_FRONT, GL_DIFFUSE, dif);
glPushMatrix();
glTranslatef(-0.3, -0.3, 0.0);
glRotatef(angle1, 1.0, 5.0, 0.0);
glCallList(1);
glPopMatrix();
glClear(GL_DEPTH_BUFFER_BIT);
glEnable(GL_LIGHT2);
glDisable(GL_LIGHT1);
amb[3] = dif[3] = 0.5 - cos(s * .95) / 2.0;
glMaterialfv(GL_FRONT, GL_AMBIENT, amb);
glMaterialfv(GL_FRONT, GL_DIFFUSE, dif);
glPushMatrix();
glTranslatef(0.3, 0.3, 0.0);
glRotatef(angle2, 1.0, 0.0, 5.0);
glCallList(1);
glPopMatrix();
glPushAttrib(GL_ENABLE_BIT);
glDisable(GL_DEPTH_TEST);
glDisable(GL_LIGHTING);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
gluOrtho2D(0.0, 1500.0, 0.0, 1500.0);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
/*draw lift flag*/
glPushMatrix();
glTranslatef(1.3, -0.3, 0.0);
glRotatef((60.0 / (5 * 2)) * tick, 0.0, 1.0, 0.0);
glBegin(GL_QUADS);
glColor3f(0.0,0.0,1.0);
glVertex3f(300.0,1400.0,-1.0);
glVertex3f(50.0,1400.0,-1.0);
glVertex3f(50.0,1200.0,-1.0);
glVertex3f(300.0,1200.0,-1.0);
glEnd();
glPopMatrix();
/*coulame flag*/
glBegin(GL_QUADS);
glColor3f(1.0,1.0,1.0);
glVertex3f(100.0,1200.0,-1.0);
glVertex3f(50.0,1200.0,-1.0);
glVertex3f(50.0,850.0,-1.0);
glVertex3f(100.0,850.0,-1.0);
glEnd();
/*draw right flag */
glPushMatrix();
glTranslatef(1.3, -0.3, 0.0);
glRotatef((60.0 / (5 * 2)) * tick, 0.0, 1.0, 0.0);
glBegin(GL_QUADS);
glColor3f(0.0,0.0,1.0);
glVertex3f(1450,1400.0,-1.0);
glVertex3f(1200,1400.0,-1.0);
glVertex3f(1200,1200.0,-1.0);
glVertex3f(1450,1200.0,-1.0);
glEnd();
glPopMatrix();
glBegin(GL_LINES);
/*coulame flag*/
glBegin(GL_QUADS);
glColor3f(1.0,1.0,1.0);
glVertex3f(1450.0,1200.0,-1.0);
glVertex3f(1400.0,1200.0,-1.0);
glVertex3f(1400.0,850.0,-1.0);
glVertex3f(1450.0,850.0,-1.0);
glEnd();
/*draw low line */
glBegin(GL_LINES);
for(i=10.0;i<700.0; i+=150.0)
{
glColor3f(0.0,0.80,0.45);
glVertex3f(0.0,i,1.0);
glVertex3f(1500,i,1.0);
}
glEnd();
glColor3f(1.0,1.0,1.0);
glRotatef(4,0.0,0.0,0.0);
output(10, 600," ALL MuSLiMs LoVeS");
output(10, 450," RaMaZaN and The ");
output(0, 150, " DoWNLoaD ");
output(0, 10, " In RaMaZaNNN ");
glColor3f(0.0,0.80,0.45);
glDisable(GL_LINE_SMOOTH);
glDisable(GL_BLEND);
output(10, 300," HOLY QURAN ");
glCallList(1);
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glPopAttrib();
glMatrixMode(GL_MODELVIEW);
glutSwapBuffers();
glFlush();
}
void idle(void)
{
angle1 = (GLfloat) fmod(angle1 + 0.8, 360.0);
angle2 = (GLfloat) fmod(angle2 + 1.1, 360.0);
s += 0.01;
tick+=1;
if (tick >= 5) {
tick = 0;
};
glutPostRedisplay();
}
void visible(int vis)
{
if (vis == GLUT_VISIBLE)
glutIdleFunc(idle);
else
glutIdleFunc(NULL);
}
void reshape(int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(50.0, 50.0, 50.0, 50.0, 0.0, 0.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void keyboard (unsigned char key, int x, int y)
{
if (key = 27)
exit(0);
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(640,480);
glutCreateWindow("RAMAZAN KAREEM");
glutDisplayFunc(display);
glutVisibilityFunc(visible);
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
glNewList(1, GL_COMPILE);
glutSolidIcosahedron();
glEndList();
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT0, GL_AMBIENT, light0_ambient);
glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diffuse);
glLightfv(GL_LIGHT1, GL_DIFFUSE, light1_diffuse);
glLightfv(GL_LIGHT1, GL_POSITION, light1_position);
glLightfv(GL_LIGHT2, GL_DIFFUSE, light2_diffuse);
glLightfv(GL_LIGHT2, GL_POSITION, light2_position);
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_LINE_SMOOTH);
glLineWidth(2.0);
glutMainLoop();
return 0;
}