Answered step by step
Verified Expert Solution
Question
1 Approved Answer
/* Copyright (c) Mark J. Kilgard, 1994. */ /* This program is freely distributable without licensing fees and is provided without guarantee or warrantee expressed
/* Copyright (c) Mark J. Kilgard, 1994. */ /* This program is freely distributable without licensing fees and is provided without guarantee or warrantee expressed or implied. This program is -not- in the public domain. */ /* blender renders two spinning icosahedrons (red and green). The blending factors for the two icosahedrons vary sinusoidally and slightly out of phase. blender also renders two lines of text in a stroke font: one line antialiased, the other not. */ #include #include #include 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, 0.0, 0.0, 1.0}; GLfloat light1_position[] = {1.0, 1.0, 1.0, 0.0}; GLfloat light2_diffuse[] = {0.0, 1.0, 0.0, 1.0}; GLfloat light2_position[] = {-1.0, -1.0, 1.0, 0.0}; float s = 0.0; GLfloat angle1 = 0.0, angle2 = 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); /* render ico display list */ 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); /* render ico display list */ glPopMatrix(); glPushAttrib(GL_ENABLE_BIT); glDisable(GL_DEPTH_TEST); glDisable(GL_LIGHTING); glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); gluOrtho2D(0, 1500, 0, 1500); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); /* Rotate text slightly to help show jaggies. */ glRotatef(4, 0.0, 0.0, 1.0); output(200, 225, "This is antialiased."); glDisable(GL_LINE_SMOOTH); glDisable(GL_BLEND); output(160, 100, "This text is not."); glPopMatrix(); glMatrixMode(GL_PROJECTION); glPopMatrix(); glPopAttrib(); glMatrixMode(GL_MODELVIEW); glutSwapBuffers(); } void idle(void) { angle1 = (GLfloat) fmod(angle1 + 0.8, 360.0); angle2 = (GLfloat) fmod(angle2 + 1.1, 360.0); s += 0.05; glutPostRedisplay(); } void visible(int vis) { if (vis == GLUT_VISIBLE) glutIdleFunc(idle); else glutIdleFunc(NULL); } int main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutCreateWindow("blender"); glutDisplayFunc(display); glutVisibilityFunc(visible); glNewList(1, GL_COMPILE); /* create ico display list */ 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); glMatrixMode(GL_PROJECTION); gluPerspective( /* field of view in degree */ 40.0, /* aspect ratio */ 1.0, /* Z near */ 1.0, /* Z far */ 10.0); glMatrixMode(GL_MODELVIEW); gluLookAt(0.0, 0.0, 5.0, /* eye is at (0,0,5) */ 0.0, 0.0, 0.0, /* center is at (0,0,0) */ 0.0, 1.0, 0.); /* up is in positive Y direction */ glTranslatef(0.0, 0.6, -1.0); glutMainLoop(); return 0; /* ANSI C requires main to return int. */ }
we are meant to use this code using visual studio 2015, OpenGl. to code and make changes to the vertex, lighting, and material properties of the model. and please add a ReadMe.txt file to explain the code, and please add comments to the code. we are supposed to make changes to the code and at thesame time add comments. changes to the vertex, lighting, and material properties of the model
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started